Centos

2010-04-06 15 views
7

पर पोस्टग्रेस 8.4.3 के साथ तैयार लेनदेन मैंने स्थानीय postgres.config में 'max_prepared_transactions' को 20 पर सेट किया है और फिर भी लेनदेन निम्न त्रुटि ट्रेस (लेकिन केवल लिनक्स पर) में विफल रहता है। चूंकि विंडोज़ में एक ही कोड निर्बाध रूप से काम करता है, अगर मैं अनुमति का मुद्दा नहीं हूं तो मैं घूम रहा हूं। समाधान क्या होगा? धन्यवाद पीटरCentos

 
372300 [Atomikos:7] WARN atomikos - XA resource 'XADBMS': rollback for XID '3137332E3230332E3132362E3139302E746D30303030313030303037:3137332E3230332E3132362E3139302E746D31' raised -3: the XA resource detected an internal error 
org.postgresql.xa.PGXAException: Error rolling back prepared transaction 
     at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:357) 
     at com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:873) 
     at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:90) 
     at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:86) 
     at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:62) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) 
     at java.lang.Thread.run(Thread.java:595) 
Caused by: org.postgresql.util.PSQLException: ERROR: prepared transaction with identifier "1096044365_MTczLjIwMy4xMjYuMTkwLnRtMDAwMDEwMDAwNw==_MTczLjIwMy4xMjYuMTkwLnRtMQ==" does not exist 
     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062) 
     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795) 
     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) 
     at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) 
     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353) 
     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:299) 
     at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:347) 
+0

मैंने/proc/sys/कर्नेल पर सेटिंग्स की भी जांच की है। वे पोस्टग्रेस्क्ल मैनुअल 'संसाधन उपभोग' –

+0

पर वर्णित सीमाओं से अधिक हैं, क्या आप अपना आदेश चला सकते हैं जो समस्या को हल करने के लिए जावा परत को पाने के लिए लिनक्स बॉक्स पर psql प्रॉम्प्ट से समस्या उत्पन्न कर रहा है? – Kuberchaun

उत्तर

6

संपादित अन्य जो एक ही लक्षण

त्रुटि पर जानकारी के लिए खोज में मदद करने के संकेत देता है कि आप अभी भी अपने max_prepared_transactions सीमा को पार कर रहे हैं।

सुनिश्चित करें कि आपके द्वारा संपादित की गई कॉन्फ़िगरेशन फ़ाइल वह है जिसका उपयोग किया जा रहा है, और आपने पोस्टग्रेस्क्ल को अपने संपादित max_prepared_transactions को चुनने के लिए अपनी कॉन्फ़िगरेशन को पुनः लोड करने के लिए कहा है।

आप क्या यह SQL के साथ उस सेटिंग के लिए उपयोग कर रहा है पता लगाने के लिए डेटाबेस क्वेरी कर सकते हैं:

SHOW max_prepared_transactions; 

मूल उत्तर अनुसरण करता (इस धारणा है कि max_prepared_transactions सही ढंग से स्थापित किया गया था के आधार पर):


क्या आप setAutoCommit() का उपयोग कर रहे हैं?

http://archives.postgresql.org/pgsql-jdbc/2010-03/msg00013.php

यह अन्य पोस्ट XA कनेक्शन है, जो आप एक बार देख ले सकता है की तैयारी के कुछ छोटे repeatable परीक्षण से पता चलता है देखने के लिए पर आप समान कुछ भी कर रहे हैं:

आप इस हाल ही में पाया बग अनुभव हो सकता है

http://archives.postgresql.org/pgsql-jdbc/2009-01/msg00025.php

+2

रीप्ले के लिए धन्यवाद। मैंने समस्या ठीक कर दी है। बात यह है कि मैंने हाल ही में वितरित लेनदेन के लिए समर्थन के लिए Postgresql 8.1 से 8.4.3 तक अपग्रेड किया है। उस प्रक्रिया के दौरान, मैंने /etc/init.d/postgresql में 'गड़बड़ी' छोड़ी है जिसमें ऐप अभी भी पुराने संस्करण से कॉन्फ़िगरेशन का उपयोग शुरू कर रहा था। पुरानी कॉन्फ़िगरेशन में 'max_prepared_transactions = 0' जिसका मतलब postgresql के साथ कोई xtransaction नहीं है –