hibernate - How to retry a lock wait timeout using java persistence? -
जावा का उपयोग करते समय
मुझे "पुनः प्रयास करने योग्य" अपवाद (जैसे कुछ लॉक प्रतीक्षा समयबाह्य की तरह) का पुनः प्रयास करने के लिए सही तरीके से कुछ स्पष्टीकरण की आवश्यकता है I हठ। उदाहरण के लिए, स्यूडोकोड की तरह:
EntityTransaction tx = em.getTransaction (); tx.begin (); (वस्तुओं का एक समूह) {em.persist (ऑब्जेक्ट); } Tx.commit ();
मुझे कभी-कभी em.persist कॉल पर एक अपवाद मिलता है अगर डीबी में ताला है क्या मैं कोशिश करूँगा / पकड़े और फिर से कोशिश करूँगा (कुछ गिनती के साथ, जाहिर है)? या क्या मुझे पूरे tx.begin / commit को लपेट करना है और उस
thx
यह मानते हुए कि लॉक टाइमआउट डेटाबेस डेडलॉक के लिए एक वैकल्पिक हल के रूप में नहीं हैं, एक सरल समाधान सिर्फ आपके अनुरोधों पर अधिक समय-समय का उपयोग करना होगा। सेकंड कोड का उपयोग करने के बजाय और सी समय के लिए पुन: प्रयास करने के बजाय, समय समाप्ति को
N * (C + 1)
सेकंड के लिए सेट करें।
(यदि आप लॉक टाइमआउट को डेडलॉक के लिए एक वैकल्पिक हल के रूप में उपयोग कर रहे हैं, तो आपको एक बड़ी समस्या है। आप डेडलॉक के मूल कारण को ठीक करने की कोशिश करना चाहते हैं, क्योंकि C < / कोड> पुन: प्रयासों की संभावना है कि आपके लेन-देन के माध्यम से नहीं जाएंगे।)
Comments
Post a Comment