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