2012-03-29 10 views
9

मैं JBoss लॉग की जांच जब मैंअर्जुन JTA लेन-देन में अप्रत्याशित रूप से rollbacked

2012-03-29 12:01:27,358 WARN @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 32, 30, 1--53e2af7c:eff6:4ec11bf7:2e1da4-53e2af7c:eff6:4ec11bf7:2e263d                 > 
2012-03-29 12:01:27,398 WARN @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 31, 29, 1--53e2af7c:d397:4e8c1b0e:25b6d-53e2af7c:d397:4e8c1b0e:29d09                  > 

तब उन त्रुटियों की एक बहुत देखते हैं, जब मैं एक JMS संदेश मैं यह त्रुटि दिखाई भेजने का प्रयास करें:

2012-03-29 12:02:43,778 WARN @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.opcerror] [com.arjuna.ats.internal.jta.resources.arjunacore.opcerror] XAResourceRecord.commit_one_phase caught: java.lang.IllegalMonitorStateException 
2012-03-29 12:02:43,778 WARN @ [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'queue/request' - trying to recover. Cause: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state 

मैं पिछली त्रुटि का परिणाम होने के लिए रोलबैक पर संदेह है। क्या मैं सही हू ? क्या लेनदेन इस तरह के निरस्त राज्य में रहने का कारण बन सकता है?

आसपास देखकर मुझे यह पोस्ट मिला: What causes Arjuna 1603 (Could not find new XAResource to use for recovering non-serializable XAResource) । मैं समझता हूं कि लेनदेन के कुछ लॉग रखा गया है, लेकिन यह बताता नहीं है कि अब मेरे पास इस मुद्दे को कैसे ठीक किया जाए।

+0

मुझे एक ही समस्या है। क्या कोई इसे हल करने के बारे में बता सकता है? – Eldar

+0

मुझे एक ही समस्या है! – Nurlan

उत्तर

1

मैं JBoss 5.1 (कम से कम एक दूसरे जो समय समाप्त करने के लिए संदर्भित करता है) पर समान त्रुटियों को देखा है

हम वास्तविक कारण नहीं मिला लेकिन यह एक लंबी चलने वाली लेन-देन के कारण काफी संभावना है कि यह कारण होता है जो "reaped"

हम इस निष्कर्ष पर आने का कारण यह है कि हमने इसे उच्च भार के समय देखा और कुछ संचालन को पूरा करने में काफी समय लग रहा था।

हम पोस्टग्रेएसक्यूएल का उपयोग करते हैं और वहां बहुत सारे कनेक्शन "लेनदेन में प्रतीक्षा" होते हैं जो कि काटने के बाद साफ़ हो जाते हैं। अपनी कॉन्फ़िगरेशन में लेन-देन टाइमआउट की जांच करें और यह देखने के लिए उच्च मूल्य पर सेट करें कि यह समस्या को कम करता है या नहीं।

https://community.jboss.org/wiki/TransactionTimeout इस सेटिंग को प्रबंधित करने के तरीके को कवर करता है।

1

आम तौर पर, प्रत्येक रनटाइम अपवाद जो प्रबंधित किए गए (कुछ इंजेक्शन जो जेबॉस प्रॉक्सी से लपेटा जाता है) से फेंक दिया जाता है और जिसे @AplicationException (रोलबैक = झूठा) के रूप में चिह्नित नहीं किया जाता है, लेनदेन को रोलबैक का कारण बनता है।

लॉग इन फ़ाइलों में आमतौर पर इन मामलों को देखना बहुत आसान होता है।

दूसरी ओर टाइमआउट, थोड़ा सा ट्रिकियर हैं। आप लॉग फ़ाइल में कुछ इस तरह देखेंगे: "एक्शन आईडी -3f57fd2d: e48e: 4cf8de0f: बीसी ने इसके अंदर सक्रिय कई थ्रेड सक्रिय किए हैं।"

अन्य कॉल चलने के लिए जारी रहेगी और जब वे डेटाबेस कनेक्शन तक पहुंचने का प्रयास करेंगे, तो "लेनदेन को रोलबैक के लिए चिह्नित किया गया है" अपवाद प्राप्त होगा।

1

हमें एक ही त्रुटि मिल रही थी और बाद में पता चला कि कारण यह था कि हम अपनी संस्थाओं को कैसे बना रहे थे और उन्हें कैसे संभालेंगे। हमारे पास बच्चों की संस्थाओं की एक सूची के साथ एक मूल वस्तु थी और हम माता-पिता की प्रतियां बना रहे थे और फिर सूचियों में नए बच्चों को जोड़ने की कोशिश कर रहे थे। समस्या हालांकि था कि उन बच्चे सूचियों आलसी लोड हो रहा है टिप्पणी के साथ चिह्नित किया गया:।

@OneToMany (झरना = CascadeType.ALL, लाने = FetchType.LAZY ...

जो विफल हाइबरनेट पैदा कर रहा था ठीक करने के लिए यह हम इकाई पर कॉल बेदखल किया था ताकि हाइबरनेट जब भी हम माता-पिता की प्रतियां बनाई बच्चों को लाने के लिए कोशिश कर बंद कर देंगे।

((सत्र) entityManager.getDelegate())। बेदखल (इकाई को बेदखल करने की)

यह आपकी विशेष समस्या का समाधान नहीं हो सकता है, लेकिन उम्मीद है कि यह किसी की मदद करता है!

-2

हम postgresql.conf फ़ाइल में max_prepared_transactions 100 को बढ़ाने के मुद्दे को हल करते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^