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.

Tengdir greinar