मैं टॉमकैट में तैनात वेबपैप लिखने के लिए Play का उपयोग कर रहा हूं। चूंकि ऐप बहुत अधिक डेटा प्रोसेस नहीं करेगा क्योंकि मैं हाइबरनेट के साथ डिफ़ॉल्ट एच 2 डेटाबेस का उपयोग कर रहा हूं। जब मैं ऐप का एक नया संस्करण तैनात करना चाहता हूं, तो मैंने टोमकैट बंद कर दिया, पुराने वेबपैप और डब्ल्यूएआर को मिटा दिया, अपना नया युद्ध जोड़ें, और बैक अप शुरू करें।प्ले करें! H2 को सही ढंग से बंद नहीं करना
यह कुछ दिनों पहले तक काम करता था, जब मैंने डेटाबेस घटक जोड़ा। अब, मैं अक्सर ऐप को फिर से तैनात करने में असमर्थ हूं। जब मैं वर्ष निर्देशिका हटाएंगे, तो उसे इस संरचना के साथ पुनर्जीवित किया गया है:
$ ls -laR myapp/
myapp/:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 13 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 WEB-INF
myapp/WEB-INF:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 application
myapp/WEB-INF/application:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 db
myapp/WEB-INF/application/db:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 2 root root 4096 Aug 24 17:20 h2
myapp/WEB-INF/application/db/h2:
total 24
drwxr-xr-x 2 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
-rw-r--r-- 1 root root 100 Aug 24 17:20 play.lock.db
एक ही होता है जब युद्ध unzips।
मैंने हाल ही में catalina.out लॉग में एक संदेश देखा है जो मेरे ऐप के बारे में शिकायत करते हुए एक प्रक्रिया को बंद नहीं कर रहा है जिसे "एच 2 फाइल लॉक वॉचडॉग" कहा जाता है। एच 2 दस्तावेज़ों की एक संक्षिप्त खोज के आधार पर, मुझे लगता है कि प्रक्रिया मेरे ऐप में हस्तक्षेप कर रही है।
SEVERE: The web application [/myapp] appears to have started a thread named [H2 File Lock Watchdog /var/lib/apache-tomcat-6.0.32/webapps/myapp/WEB-INF/application/db/h2/play.lock.db] but has failed to stop it. This is very likely to create a memory leak.
तो, मैं इस प्रक्रिया को मारने करते हैं:
संपादित
यहाँ लॉग फ़ाइल में शिकायत लाइन है? मैं मशीन को पुनरारंभ नहीं कर सकता क्योंकि यह मेरा नहीं है, और मुझे top
या ps
के साथ वॉचडॉग नहीं मिल रहा है। मैं स्वचालित रूप से इसे बंद करने के लिए Play के लिए एक तरीका पसंद करूंगा, लेकिन मैं इसे अपनी तैनाती स्क्रिप्ट में बनाने से ऊपर नहीं हूं।
यदि आप इसे अभी तक पढ़ चुके हैं तो लाखों धन्यवाद!
उल्लेख करने का एक और बिंदु यह है कि डेटाबेस प्रक्रिया स्पष्ट रूप से मर जाती है। मुझे यकीन नहीं है कि यह कितना समय लगता है, लेकिन यह घंटों के पैमाने पर है।इसे प्रतीक्षा करना केवल एक समाधान है, लेकिन कुछ भी बेहतर नहीं है? – andronikus