प्रॉक्सीद्वारे अपूर्ण प्रतिमा: Netty च्या लेखन-पूर्णतेची तपासणी करा
जेव्हा प्रॉक्सीद्वारे प्रतिमा अपूर्ण येतात, तेव्हा ओरिजिन अतुल्यकालिक प्रतिसाद लेखन पूर्ण होण्यापूर्वी आपला Netty चॅनेल बंद करतो का ते तपासा.
एक प्रतिमा वेगवान थेट कनेक्शनवर कार्य करते, परंतु संथ फॉरवर्ड प्रॉक्सीद्वारे अपूर्ण येते. एक संभाव्य कारण म्हणजे ओरिजिन कनेक्शन बंद करतो जेव्हा त्याचा प्रतिसाद अजून लिहिला जात असतो.
Netty I/O अतुल्यकालिक आहे. writeAndFlush वरून परत येणे म्हणजे ती क्रिया पूर्ण झाली असे नाही. त्यामुळे रांगेत अजून बाइट्स असलेल्या प्रतिसादासाठी हा क्रम सुरक्षित नाही:
ctx.writeAndFlush(response);
ctx.close();
जेव्हा HTTP देवघेव त्याच्या शेवटच्या प्रतिसाद संदेशानंतर जाणूनबुजून बंद होत असते, तेव्हा बंद करणे त्या लेखनाच्या future ला जोडा:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
हा तुकडा गृहीत धरतो की प्रतिसाद आधीच योग्यरित्या तयार आणि फ्रेम केलेला आहे. स्ट्रीम केलेल्या बॉडीसाठी त्याच्या शेवटच्या संदेशाची पूर्णता वापरा, हेडरचे लेखन नाही. सतत HTTP कनेक्शनसाठी, फक्त प्रतिसाद संपला म्हणून बंद जोडू नका.
अनुप्रयोगाच्या सामान्य त्रुटी हाताळणीचा भाग म्हणून future च्या अपयशाची तपासणी करा. पूर्णतेमध्ये अपयश आणि रद्द करणे समाविष्ट आहे, म्हणून केवळ पूर्णता ब्राउझरकडून वितरणाची पावती नाही.
उपयुक्त तुलना म्हणजे प्रत्येक मार्गावरील संपूर्ण प्रतिसाद लांबी आणि लेखनाचा निकाल. प्रॉक्सी वेळ पुरेसा बदलू शकतो जेणेकरून विद्यमान जीवनचक्र त्रुटी उघड होईल; त्याची उपस्थिती हे सिद्ध करत नाही की त्याच्या कंप्रेसर किंवा कॅशने बाइट्स टाकून दिले.