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、およびOracle9.2.08を使用しています。

私はいくつかのテストを行いましたが、行がロックされている間はロールバックが機能しません。トランザクションのタイムアウトから経過した時間は関係ありません。トランザクションのタイムアウト後に行のロックを解除すると、その時点でロールバックが開始されます。

私はウェブ上でいくつかの調査を行いましたが、まったく同じエラーは見つかりませんでした。

ありがとう。

ディエゴ。

4

2 に答える 2

4

最後に私は答えを見つけました(ここではstackoverflowで)。それは私の問題を解決しません(何が起こっているのかは予想される振る舞いであるため)が、何が起こっているのかを説明します。

スレッドに対するトランザクションタイムアウト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のトランザクションのxml構成は、jbossjta-properties.xmlではなくjbossts-properties.xmlです。

于 2012-10-22T17:51:47.360 に答える