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