再現テストのお願い

Subject:        再現テストのお願い 

デッドロック回避策として、下記2ケースをテストしていただけますでしょうか。 

①リソース参照に分離レベルを定義 
該当のSQLを実行するSessionBeanに対して"リソース参照"を定義し、実行環境にデ 
プロイしてからテストを実施して下さい。 
設定方法の例を画像として送付させていただきます。 
"タイプ"にはお使いのデータソースを指定して下さい。 
"分離レベル"は"トランザクション読み取りコミット(TRANSACTION_READ_COMMITTED)"です。 

 ・WSADの場合の例 ConnectionSharing.zip 
 ・WASのAATツールの例 aat.zip 


②SELECT文に"WITH CS"オプションを定義 
以前実行していただいて効果がなかったとの事ですが、SELECT文を修正し、もう一 
度実施していただき解析用の資料をいただく事は可能でしょうか? 


上記テストでデッドロックが解消されなかった場合は、お手数ですが、前回と同じ 
資料(CLI トレース、JDBCトレース、イベントモニター、 
デプロイメント・ディスクリプター)を取得していただけますでしょうか? 


また、下記要領でlock snapshotを取得していただけると助かります。 
-------------------------------------------------------------------------------------------------------------- 
取得に先立って、dead lock check timeout の時間を3分くらいに伸ばしていただ 
き、デッドロックが発生した事に気がついたらすぐ 
コマンドを入力して下さい 

$ db2 update db cfg for sample using dlchktime 180000 
DB20000I  The UPDATE DATABASE CONFIGURATION command completed 
successfully. 

コマンド実行用のウインドウから下記コマンドを実行 

$ db2 update monitor switches using lock on 
DB20000I  The UPDATE MONITOR SWITCHES command completed successfully. 

デッドロックの待ち(3分)がはじまったと思われたら、上のlockモニターの 
switch on したウインドウで下記コマンドを実行 
$ db2 get snapshot for locks on sample > l1.txt 
-------------------------------------------------------------------------------------------------------------- 


テスト実施に先立って、下記のようなコードで分離レベルの設定をしていない事も 
ご確認下さい。 
  Connection conn = ds.getConnection(); 
  conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITED) 
上記①②の指定が優先されるはずですので、まずは上記①②の指定でテストを実施 
して下さい。 


今回のデッドロック発生の原因は、分離レベルのデフォルトが"トランザクション反復可能読み取り(RS)"であり、 
"トランザクション読み取りコミット(CS)"では無かった事が原因だと考えておりま 
す。 

分離レベルを"トランザクション読み取りコミット(CS)"に設定できれば、デッドロ 
ックは回避可能なはずです。 

以上、よろしくお願いいたします。 



2003/07/09 ugya@lycos.com