2008-10-22 14 views
7

हमारे ग्राहकों एप्लिकेशन के पास निम्न स्टैक ट्रेस के साथ मौज-मस्ती करने लगता है:जावा आवेदन हैंग

java.lang.Thread.State: RUNNABLE 
    at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) 
    at java.io.UnixFileSystem.getBooleanAttributes(Unknown Source) 
    at java.io.File.isFile(Unknown Source) 
    at org.tmatesoft.svn.core.internal.wc.SVNFileType.getType(SVNFileType.java:118) 
    at org.tmatesoft.svn.core.internal.wc.SVNFileUtil.createUniqueFile(SVNFileUtil.java:299) 
    - locked <0x92ebb2a0> (a java.lang.Class for org.tmatesoft.svn.core.internal.wc.SVNFileUtil) 
    at org.tmatesoft.svn.core.internal.wc.SVNRemoteDiffEditor.createTempFile(SVNRemoteDiffEditor.java:415) 
    at org.tmatesoft.svn.core.internal.wc.SVNRemoteDiffEditor.applyTextDelta(SVNRemoteDiffEditor.java:255) 

किसी को भी पता है कि यह isFile में लटका कारण बन सकता है?

उत्तर

0

कोई विचार है, लेकिन स्पष्ट सवाल जिनमें से JDK/JRE मन और क्या दूसरों आप की कोशिश की है की बात आती है ...

+0

ग्राहक सूर्य के जेआरई 1.6.0.07 का उपयोग कर रहा है। मैंने अभी तक किसी अन्य की कोशिश नहीं की है। मुझे [http://www.ruby-forum.com/topic/165608] और [http://www.jetbrains.net/jira/browse/IDEADEV-23062] कुछ समान रिपोर्टिंग मिली, लेकिन बिना समाधान की। –

0

शायद SVN भंडार किसी भी तरह लॉक किया गया है सभी मैं क्या कर सकते हैं अनुमान है।

क्या एप्लिकेशन एक उपवर्तन भंडार तक पहुंचता है?

यह रिपोजिटरी को फिर से लॉक नहीं होने का इंतजार कर रहा है, जो आपका आवेदन जानता है।

+0

उपर्युक्त स्टैक ट्रेस से ऐसा लगता है कि tmatesoft कोड tempfile बनाने की कोशिश कर रहा है। यह हमारा कोड नहीं है, लेकिन जावा svn क्लाइंट हम svn से बात करने के लिए उपयोग करते हैं। –

7

getBooleanAttributes0stat (या stat64, यदि उपलब्ध हो) कॉल करता है। यदि आपके पास ओपनजेडीके स्रोत कोड है, तो यह फ़ाइल jdk/src/solaris/native/java/io/UnixFileSystem_md.c में सूचीबद्ध है।

तो असली सवाल यह है कि stat क्यों जमे हुए है? क्या फाइल को सर्वर पर एक नेटवर्क फ़ाइल तक पहुंचाया जा रहा है, उदाहरण के लिए? यदि यह एक पुनरुत्पादित समस्या है, तो आप ठंड से ठीक पहले, जावा प्रक्रिया से संलग्न करने के लिए strace का उपयोग करना चाह सकते हैं। फिर क्या देखा जा रहा है यह देखने के लिए stat पर कॉल के लिए आउटपुट देखें।

+0

मुझे यह कोई nfs माउंट के साथ मिल रहा है ... शायद खराब डिस्क ब्लॉक grrrr –

5

stat कॉल की तरह लगता है कि getBooleanAttributes0 से परिणाम अवरुद्ध हो रहा है। यह आमतौर पर होता है क्योंकि फ़ाइल एक एनएफएस शेयर पर स्थित है जो नीचे है।

+0

हमने देखा है कि एनएफएस फ़ाइल सिस्टम पर भारी भार के तहत। – ReneS

1

हम इस मुद्दे को एक्लिप्स में देखते हैं जब यह एनएफएस ऑटोमोट निर्देशिका में एक गैर-मौजूद फ़ाइल को आंकड़े करता है।

यदि आप अपनी जावा प्रक्रिया को -f -t -T (फोरक्स और समय का पालन करें) के साथ चिपकाते हैं तो हम देखते हैं कि अधिकतर आंकड़े बहुत कम समय में लौटते हैं। ऑटोमाउंट निर्देशिका में से अधिक लोग परिमाण के दो ऑर्डर लेते हैं।

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

समाधान, जावा को ऐसा करने से रोकना है।

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