2

我正在使用访问 oracle 数据库的应用程序。有时,该数据库上的对象(行)被我的应用程序外部的进程锁定。

我遇到的问题是,当事务达到事务超时时,arjuna 协调器尝试回滚事务但没有成功

堆栈跟踪如下

09:15:42,494 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsF
actory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the b
ean container
09:16:12,287 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.Transactio
nReaper_18] - TransactionReaper::check timeout for TX -7ffd9392:a9b:507ff0a4:97
in state  RUN
09:16:12,292 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicActio
n_58] - Abort of action id -7ffd9392:a9b:507ff0a4:97 invoked while multiple thre
ads active within it.
09:16:12,294 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.CheckedAct
ion_2] - CheckedAction::check - atomic action -7ffd9392:a9b:507ff0a4:97 aborting
 with 1 threads active!
09:16:12,789 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.Transactio
nReaper_18] - TransactionReaper::check timeout for TX -7ffd9392:a9b:507ff0a4:97
in state  CANCEL
09:16:13,291 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.Transactio
nReaper_18] - TransactionReaper::check timeout for TX -7ffd9392:a9b:507ff0a4:97
in state  CANCEL_INTERRUPTED
09:16:13,293 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.Transactio
nReaper_6] - TransactionReaper::check worker Thread[Thread-11,5,jboss] not respo
nding to interrupt when cancelling TX -7ffd9392:a9b:507ff0a4:97 -- worker marked
 as zombie and TX scheduled for mark-as-rollback
09:16:13,297 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.Transactio
nReaper_11] - TransactionReaper::check failed to mark TX -7ffd9392:a9b:507ff0a4:
97  as rollback only

我正在使用 jboss-5.1.0.GA、Hibernate 3.3.1.GA 和 Oracle 9.2.08。

我已经做了几个测试,当行被锁定时,回滚不起作用。自事务超时以来经过的时间无关紧要。如果我在事务超时后解锁该行,则回滚从那一刻开始。

我在网上做了一些研究,但没有发现完全相同的错误。

谢谢。

迭戈。

4

2 回答 2

4

最后我找到了答案(在stackoverflow上)。它不能解决我的问题(因为正在发生的事情是预期的行为),但可以解释正在发生的事情。

Transaction TimeOut EJB 对线程的影响

于 2012-10-24T12:43:58.093 回答
0

在这里,我找到了如何在 jboss 上启用 arjuna 日志记录:

http://germanogiudici.wordpress.com/2011/09/02/how-to-log-transaction-informations-in-jboss-4-2-3-ga/

我希望这有助于获得有关正在发生的事情的更多信息。

直到今天我发现,持有事务的 workerThread 没有在 cancel() 方法上完成。但是根据我当前的日志级别,我看不到发生了什么。

我会在调试后发布更多消息。

注意:jboss 5.1 中 Transactions 的 xml 配置是 jbossts-properties.xml 而不是 jbossjta-properties.xml。

于 2012-10-22T17:51:47.360 回答