2013-07-16 6 views
5

मैं स्प्रिंगबैच 2.1.7 रिलीज कोर और इंफ्रास्ट्रक्चर जार का उपयोग कर एक CSV फ़ाइल पढ़ने और इसे डीबी में सहेजने के लिए उपयोग करता हूं।गलत संस्करण (2) के साथ चरण निष्पादन आईडी = 1 को अद्यतन करने का प्रयास, जहां वर्तमान संस्करण 1

एकीकृत वसंत क्वार्ट्ज अनुसूचक के साथ मेरे कोड हर मिनट के लिए चलाने के लिए, बैच पढ़ने और लिखने लेकिन त्रुटि "org.springframework.dao.OptimisticLockingFailureException के साथ अपने में नाकाम रहने के साथ ठीक काम कर रहा है: के साथ कदम निष्पादन आईडी = 1 अद्यतन करने का प्रयास गलत संस्करण (2), जहां वर्तमान संस्करण 1 "

टीएक्स विवादों के कारण है। कृपया सुझाव दें कि मैं इस मुद्दे को कैसे हल कर सकता हूं।

+0

हाय इस पर किसी भी अद्यतन डिबग:

तो, दुर्भाग्य से, मेरा उत्तर है? – user2583922

+0

क्या आपने इसका समाधान किया है? – surlac

+1

यह आपकी समस्या का समाधान कर सकता है http://ashamathavan.blogspot.in/2010/12/optimisticlockingfailureexception.html –

उत्तर

3

मेरे पास यह वही अपवाद था।

org.springframework.dao.OptimisticLockingFailureException: 
Attempt to update step execution id=0 with wrong version (2), where current version is 3 

मेरे मामले में, यह प्रक्रिया चरण में विफलता के कारण हुआ था, जिसे निगल लिया जा रहा था। स्प्रिंग बैच ने लेखक को सक्रिय किया, भले ही प्रोसेसर विफल हो गया। यह सुनिश्चित करने के लिए कि आपका प्रक्रिया चरण पूरा हो रहा है और कुछ लौटा रहा है, अपने लॉग देखें।

1

जैसा कि मैटसी द्वारा इंगित किया गया था, मुझे यह त्रुटि हुई जब मेरे ItemProcessor को गड़बड़ कर दिया गया था। किसी कारण, मेरी प्रोसेसर गतिविधियों के दौरान के लिए, यह jobrepository साथ डेटा स्रोत कनेक्शन बंद करने गया था, इसलिए मेरी अपवाद था: स्टैकट्रेस के अंत में

Encountered an error saving batch meta data for step step1 in job myjob. This job is now in an unknown state and should not be restarted. 
org.springframework.dao.OptimisticLockingFailureException: Attempt to update step execution id=1 with wrong version (1), where current version is 2 

, मैं ढूँढने में सक्षम था:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Connection is closed. 

समस्या की पहचान करने के लिए, पहले मैं चरण को अलग करता हूं। मैंने एक नोओप्रोसेसर और नोऑपइटम लेखक बनाया। टास्कलेट को समायोजित किया और यह अच्छी तरह से काम किया। तो मेरी समस्या पाठक में नहीं थी।

फिर मैंने अपने "पूर्ण" आइटमवाइटर कार्यान्वयन में रोलबैक किया, और फिर, यह अच्छी तरह से काम किया। तो मेरी समस्या लेखक के साथ नहीं थी। जब मैंने अपना "पूर्ण" प्रोसेसर सक्षम किया, तो त्रुटि फिर से हुई। तो, त्रुटि उसमें थी, और मैंने डीबगिंग शुरू कर दी। ...

public class NoOpProcessor implements ItemProcessor<Object, Object> { 
    @Override 
    public Object process(Object arg0) throws Exception { 
     System.out.println("Input object: " + Objects.toString(arg0));  
     return arg0; 
    } 
} 

public class NoOpItemWriter implements ItemWriter<Object> { 
    @Override 
    public void write(List<? extends Object> items) throws Exception { 
     if (items != null) { 
      System.out.println("Qtty of items to be written: " + items.size()); 
      for (Object obj : items) { 
       System.out.println(Objects.toString(obj)); 
      } 
     } else { 
      System.out.println("The items list is null. Nothing to be written."); 
     } 
    } 
} 
संबंधित मुद्दे