5.4. 期限切れトランザクションの消去
期限切れトランザクションを消去できるプロパティーは次のとおりです。
ExpiryEntryMonitor
リカバリーマネージャーが期限切れスキャナースレッドを初期化すると、オブジェクトストアから期限切れのアイテムを削除するために使用される
ExpiryEntryMonitor
オブジェクトが作成されます。複数のスキャナーモジュールは動的にロードされ、特定タイプの期限切れのアイテムを削除します。RecoveryEnvironmentBean.expiryScanners
システムプロパティーを使用すると、プロパティーファイルのスキャナーモジュールを設定できます。スキャナーモジュールは初期化時にロードされます。$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanners=CLASSNAME1,CLASSNAME2
expiryScanInterval
すべてのスキャナーモジュールは、期限切れのアイテムをスキャンするため、
ExpiryEntryMonitor
スレッドによって周期的に呼び出されます。この期間を時間単位で設定するには、以下の例のようにexpiryScanInterval
システムプロパティーを使用します。$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanInterval=EXPIRY_SCAN_INTERVAL
すべてのスキャナーモジュールは、ExpiryScanner
インターフェースから同じ動作を継承します。このインターフェースは、以下を含むすべてのスキャナーモジュールによって実装されたスキャンメソッドを提供します。スキャナースレッドはこのスキャンメソッドを呼び出します。
ExpiredTransactionStatusManagerScanner
ExpiredTransactionStatusManagerScanner
は期限切れのTransactionStatusManagerItems
をオブジェクトストアから削除します。これらのアイテムは、削除される前に一定期間オブジェクトストアに保持されます (デフォルトでは 12 時間)。この期間を時間単位で設定するには、transactionStatusManagerExpiryTime
システムプロパティーを以下の例のように使用します。$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.transactionStatusManagerExpiryTime=TRANSACTION_STATUS_MANAGER_EXPIRY_TIME
AtomicActionExpiryScanner
AtomicActionExpiryScanner
は、完了済みであると仮定されたAtomicActions
のトランザクションログを移動します。たとえば、参加者がコミットを指示された後、transactions
サブシステムによるログの更新が可能になる前に障害が発生した場合、リカバリー時に JBoss EAP トランザクションマネージャーはコミットリクエストを再実行しようとします。しかし、これは失敗するため、ログは削除されません。破損やゼロ長などが理由で自動的にログをリカバリーできない場合、AtomicActionExpiryScanner
も使用されます。すべてのログは、/Expired
が付けられた以前の場所を基にして、特定の場所に移動されます。注記AtomicActionExpiryScanner
はデフォルトで無効になっています。これをトランザクションマネージャーのプロパティーファイルに追加すると有効にすることができます。破損したログに対応するために有効にする必要はありません。