Ófullnægjandi myndir í gegnum proxy: athugaðu skrifloka Netty
Þegar myndir berast ófullnægjandi í gegnum proxy, skoðaðu hvort uppruninn lokar Netty-rásinni áður en ósamstilltri skrift svarsins lýkur.
Mynd virkar á hraðri beinni tengingu en er ófullnægjandi í gegnum hægari forward-proxy. Ein möguleg orsök er að uppruninn lokar tengingunni á meðan verið er að skrifa svarið.
Netty I/O er ósamstillt. Að snúa aftur úr writeAndFlush þýðir ekki að aðgerðinni sé lokið. Þessi röð er því ekki örugg fyrir svar sem á enn bæti í biðröð:
ctx.writeAndFlush(response);
ctx.close();
Þegar HTTP-skiptunum er vísvitandi lokað eftir síðustu svarsskilaboðin, festu lokunina við future þeirrar skriftar:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
Brotandinn gerir ráð fyrir að svarið sé þegar rétt uppbyggt og rammað. Fyrir streymt líkama skal nota lok síðustu skilaboða hans en ekki skrift hausanna. Fyrir varanlega HTTP-tengingu skal ekki bæta við loki bara vegna þess að svari lokið.
Skoðaðu bilun future sem hluta af venjulegri villumeðferð forritsins. Loki felur í sér bilun og afbókun, svo lok eitt og sér er ekki afhendingarkvittun frá vafranum.
Gagnlegi samanburðurinn er heildarlengd svarsins og skrifniðurstaðan á hverri leið. Proxy getur breytt tímasetningunni nóg til að afhjúpa fyrirliggjandi lífsferilvillu; tilvist hans sannar ekki að þjapparinn eða skyndiminnið hafi hent bætunum.