Imazhe të paplota përmes një proxy: kontrolloni përfundimin e shkrimit të Netty
Kur imazhet vijnë të paplota përmes një proxy, shqyrtoni nëse origjina mbyll kanalin e saj Netty përpara se të përfundojë shkrimi asinkron i përgjigjes.
Një imazh funksionon përmes një lidhjeje të drejtpërdrejtë të shpejtë, por është i paplotë përmes një proxy forward më të ngadaltë. Një shkak i mundshëm është që origjina mbyll lidhjen ndërsa përgjigja e saj ende po shkruhet.
I/O e Netty është asinkrone. Kthimi nga writeAndFlush nuk do të thotë që operacioni ka përfunduar. Prandaj ky rend nuk është i sigurt për një përgjigje që ka ende bajt në radhë:
ctx.writeAndFlush(response);
ctx.close();
Kur shkëmbimi HTTP mbyllet qëllimisht pas mesazhit të tij të fundit të përgjigjes, lidhni mbylljen me future e atij shkrimi:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
Fragmenti supozon se përgjigja është ndërtuar dhe kornizuar tashmë saktë. Për një trup të transmetuar në rrjedhë, përdorni përfundimin e mesazhit të tij të fundit, jo shkrimin e kokave. Për një lidhje HTTP të vazhdueshme, mos shtoni mbyllje vetëm sepse një përgjigje përfundoi.
Shqyrtoni dështimin e future si pjesë e trajtimit normal të gabimeve të aplikacionit. Përfundimi përfshin dështimin dhe anulimin, kështu që përfundimi vetëm nuk është një konfirmim dorëzimi nga shfletuesi.
Krahasimi i dobishëm është gjatësia e plotë e përgjigjes dhe rezultati i shkrimit në çdo rrugë. Një proxy mund të ndryshojë kohën mjaftueshëm për të zbuluar një gabim ekzistues të ciklit të jetës; prania e tij nuk provon që kompresori ose cache-ja e tij i hodhi bajt.