5.4. 清除过期的事务
以下属性允许您清除过期的交易:
ExpiryEntryMonitor当 Recovery Manager 初始化到期扫描器线程时,会创建
ExpiryEntryMonitor对象,用于从对象存储中删除死的项目。动态加载多个扫描程序模块,这将删除特定类型的死项目。您可以使用
RecoveryEnvironmentBean.expiryScanners系统属性在属性文件中配置扫描程序模块。扫描程序模块是在初始化时加载的。EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanners=CLASSNAME1,CLASSNAME2
$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanners=CLASSNAME1,CLASSNAME2Copy to Clipboard Copied! Toggle word wrap Toggle overflow expiryScanInterval所有扫描程序模块定期调用,以便通过
ExpiryEntryMonitor线程扫描死项。您可以使用expiryScanInterval系统属性以小时为单位配置这个周期,如下例所示:EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanInterval=EXPIRY_SCAN_INTERVAL
$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.expiryScanInterval=EXPIRY_SCAN_INTERVALCopy to Clipboard Copied! Toggle word wrap Toggle overflow
所有扫描程序模块继承来自 ExpiryScanner 接口的相同行为。此界面提供的扫描方法由所有扫描程序模块实施,包括以下内容:扫描程序线程调用这个扫描方法。
ExpiredTransactionStatusManagerScannerExpiredTransactionStatusManagerScanner从对象存储中删除死的TransactionStatusManagerItems。这些项目在对象存储中保留在删除之前的特定时间段,默认为 12 小时。您可以使用transactionStatusManagerExpiryTime系统属性(以小时为单位)配置这个时间周期,如下例所示:EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.transactionStatusManagerExpiryTime=TRANSACTION_STATUS_MANAGER_EXPIRY_TIME
$ EAP_HOME/bin/standalone.sh -DRecoveryEnvironmentBean.transactionStatusManagerExpiryTime=TRANSACTION_STATUS_MANAGER_EXPIRY_TIMECopy to Clipboard Copied! Toggle word wrap Toggle overflow AtomicActionExpiryScannerAtomicActionExpiryScanner可移动假定已完成AtomicAction的事务日志。例如,如果在告知参与者提交后发生故障,但在事务子系统可以更新日志之前,在恢复后 JBoss EAP 事务管理器尝试重播提交请求。此重播显然会失败,从而导致日志无法被删除。当因为损坏或零长度等原因无法自动恢复日志时,也可以使用AtomicActionExpiryScanner。所有日志都会根据附加/Expired的旧位置移动到特定的位置。注意默认情况下禁用
AtomicActionExpiryScanner。您可以通过在事务管理器属性文件中添加它来启用它。您不需要启用它来应对损坏的日志。