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 はデフォルトで無効になっています。これをトランザクションマネージャーのプロパティーファイルに追加すると有効にすることができます。破損したログに対応するために有効にする必要はありません。