JBoss垃圾邮件XA Recovery警告 [英] JBoss spamming XA Recovery warnings

查看:271
本文介绍了JBoss垃圾邮件XA Recovery警告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行一个JPA/Spring应用程序,该应用程序连接到Microsoft SQL Server上多个启用XA的数据源.一切正常,全局事务正确启动并根据需要回滚...

I'm running a JPA/Spring application that connects to multiple XA enabled datasources on Microsoft SQL Server. Everything works just fine, with global transactions correctly starting and rolling back as needed...

但是,JBoss时不时地疯狂并每隔几秒钟就开始发送以下警告:

But, every now and then JBoss goes wild and starts spamming the following warning every few seconds:

10:25:22,524 WARN  [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_RMERR: javax.transaction.xa.XAException: The function RECOVER: failed. The status is: -3. Error: "*** SQLJDBC_XA DTC_ERROR Context: xa_recover, state=1, StatusCode:-3 (0xFFFFFFFD) ***"
    at com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550)
    at com.microsoft.sqlserver.jdbc.SQLServerXAResource.recover(SQLServerXAResource.java:728)
    at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.recover(XAManagedConnection.java:358)
    at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.recover(XAResourceWrapperImpl.java:162)
    at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecovery(XARecoveryModule.java:503) [jbossjts-4.16.2.Final.jar:]
    at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:471) [jbossjts-4.16.2.Final.jar:]
    at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:385) [jbossjts-4.16.2.Final.jar:]
    at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:166) [jbossjts-4.16.2.Final.jar:]
    at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-4.16.2.Final.jar:]
    at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-4.16.2.Final.jar:]

到目前为止,我还无法解释我在这里应该做的事情,我有点担心将处于这种状态的应用程序投入生产.

So far I haven't been able to decipher what I'm expected to do here and I'm a bit worried about putting an application in such state into production.

任何人都可以阐明为什么会发生这种情况,如何解决和避免这种情况吗?

Can anyone shed some light on why this is happening, how to resolve and avoid it?

在Windows日志中,我找不到任何看起来像DTC错误的东西:

In Windows logs I couldn't find anything that looks like a DTC error:

MSDTC开始时具有以下设置:

MSDTC started with the following settings:

安全配置(OFF = 0和ON = 1):允许远程 管理员= 0,网络客户端= 0,事务管理器 通信:允许入站事务= 0,允许出站 事务= 0,事务Internet协议(TIP)= 0,启用 XA事务= 1,启用SNA LU 6.2事务= 1,MSDTC 通信安全=需要相互身份验证,帐户= NT AUTHORITY \ NetworkService,检测到防火墙排除= 0

Security Configuration (OFF = 0 and ON = 1): Allow Remote Administrator = 0, Network Clients = 0, Transaction Manager Communication: Allow Inbound Transactions = 0, Allow Outbound Transactions = 0, Transaction Internet Protocol (TIP) = 0, Enable XA Transactions = 1, Enable SNA LU 6.2 Transactions = 1, MSDTC Communications Security = Mutual Authentication Required, Account = NT AUTHORITY\NetworkService, Firewall Exclusion Detected = 0

已安装事务桥= 0过滤重复事件= 1

Transaction Bridge Installed = 0 Filtering Duplicate Events = 1

尝试初始化Microsoft分布式事务处理协调器(MS DTC).这仅是参考消息.无需用户采取任何行动.

Attempting to initialize Microsoft Distributed Transaction Coordinator (MS DTC). This is an informational message only. No user action is required.

有关Microsoft分布式事务处理协调器(MS DTC)的任何不确定的分布式事务的恢复已完成.这仅是参考消息.无需用户采取任何行动.

Recovery of any in-doubt distributed transactions involving Microsoft Distributed Transaction Coordinator (MS DTC) has completed. This is an informational message only. No user action is required.

在1秒内完成对数据库MyDatabase(数据库ID 20)的恢复(分析589毫秒,重做0毫秒,撤消398毫秒.)这仅是参考消息.无需用户采取任何行动.

Recovery completed for database MyDatabase (database ID 20) in 1 second(s) (analysis 589 ms, redo 0 ms, undo 398 ms.) This is an informational message only. No user action is required.

推荐答案

存在相同的问题.

我该如何解决?使用分布式事务(在我的情况下插入一些数据).

How did I solve it? Using the distributed transactions (inserting some data in my case).

我的猜测,我之所以说是猜测,是因为sqljdbc4.jar源代码尚未发布,并且无法说出真正的问题所在.好吧,我的猜测是,每当您的jboss服务器启动时,您的分布式事务框架就会检查要恢复的交易.这些保存在第一次为空的表中,因此会引发警告(com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550)),因为再次存储了 xp_sqljdbc_xa_recover 过程找不到任何东西(我又在猜测).

My guess, and I say guess because the sqljdbc4.jar source code has not being released and can not tell what really is the issue. Well, my guess is that each time your jboss server starts, your distributed transaction framework checks for transactions to be recovered. These are hold in a table that the first time is empty, so this raise the warning (com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550) ) because again the xp_sqljdbc_xa_recover stored procedure cannot find anything (I'm guessing again).

因此,基本上,使用分布式事务向数据库中插入一些内容,然后再次运行jboss/tomcat服务器以消除警告.

So basically, inserted something into the databases using distributed transaction and run again the jboss/tomcat server to get rid of the warning.

这篇关于JBoss垃圾邮件XA Recovery警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆