IBM Support

TIプロセスでSynchronized()を使用しているにも関わらずLockの競合が発生してプロセスがロールバックされる。

Troubleshooting


Problem

お客様は、同じプロセスを同時に複数のユーザーから実行しています。この時、プロセスでsynchronized() 関数を宣言して実行されるプロセスをシリアライズしているにも関わらず、ロックの競合が発生して、プロセスがロールバックされてしまいました。

Symptom

ロックの競合を確認するためにDEBUGレベルのログを取得すると、以下のログが見つかり、Semaphoreのためのロックがリリースされ、他のプロセスがロックを取得した事が分かりました。
11056   [f8d]   DEBUG   2020-12-27 22:04:57.466   TM1.Lock.Exception   Further explaining contention encountered by thread 13652 when attempting to acquire lock (0x00000099730FB010) on object [Semaphore "P1007", addr=0x000000995D620068, index=N-0]

Cause

この場合、個々のプロセス内でキューブデータを保存するためにCubeSaveDataを使用していましたが、これがShemaphoeのロックをリリースしていました。このため、他のプロセスがロックを取得し、元のプロセスがCubeSaveData実行後にロックを取得しようとした際にロックに失敗し、ロールバックが発生しました。

Resolving The Problem

この様な使用状況の場合、SaveDataAllと同様に、CubeSaveDataを個々のプロセス内で使用しない様にして下さい。

Document Location

Worldwide

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSD29G","label":"IBM Planning Analytics"},"ARM Category":[{"code":"a8m0z000000GoURAA0","label":"Troubleshooting-\u003ELock Contention"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Version(s)"}]

Document Information

Modified date:
02 October 2024

UID

ibm16414105