मैं अब कुछ ही हफ्तों के लिए एक TransferManager
मुद्दे के साथ लड़ रहा है प्राप्त नहीं कर सकता है और मैं कुछ प्रतिक्रिया प्राप्त करने की उम्मीद कर रहा हूँ,एडब्ल्यूएस जावा TransferManager मुद्दा, JVM किसी भी अधिक देशी धागे
मैं एक सर्वर अनुप्रयोग है कि इंतजार कर रहा है है कार्यों को भेजने के लिए। इनमें से कुछ कार्यों को S3 पर अपलोड की आवश्यकता है। कार्य में एक्सेस अपलोड कुंजी सहित सभी अपलोड जानकारी शामिल हैं।
मेरे वास्तविक अपलोड कोड में, मुझे हर बार अपलोड करने की आवश्यकता होने पर मुझे नया S3Client
और TransferManager
ऑब्जेक्ट बनाने की आवश्यकता है क्योंकि मुझे समय से पहले मेरी एक्सेस कुंजी नहीं पता है।
सिस्टम प्रक्रियाओं के लगभग 1200 अपलोड करने के बाद मुझे एक त्रुटि मिली जो इंगित करती है कि JVM कोई और देशी धागे नहीं प्राप्त कर सका। मैंने एप्लिकेशन के लिए एक प्रोफाइलर संलग्न किया और देखा कि TransferManager
ऑब्जेक्ट ठीक से साफ नहीं हो रहा था, हजारों "s3-transfer-manager-worker-1" धागे निष्क्रिय बैठे थे।
अपलोड पूरा होने के बाद मैंने TransferManager.shutdownNow()
पर कॉल जोड़ने का प्रयास किया। उसने धागे को साफ कर दिया। हालांकि, जब भी कोई नया TransferManager
बनाया गया था और अपलोड का प्रयास किया गया था, तो मुझे RejectedExecutionException
प्राप्त करना शुरू हो गया था।
TransferManager
में UploadMonitor
और UploadMonitor
में स्थिर ScheduledExecutorService
है। TransferManager.shutdownNow()
स्थिर विधि UploadMonitor.shutdownNow()
पर कॉल करता है जो निष्पादक सेवा पर shutdownNow()
पर कॉल करता है। इससे ऐसा होता है कि मैं अब TransferManager
ऑब्जेक्ट्स का उपयोग नहीं कर सकता, भले ही मैं एक नया निर्माण करने का प्रयास करता हूं।
धागे से बाहर किए बिना एकाधिक स्थानांतरण वस्तुओं का उपयोग करने के बारे में मैं कैसे जा सकता हूं? ऐसा लगता है कि यह एक बग है।
+1 अपने स्वयं के प्रश्न के लिए, धन्यवाद! –