ප්රොක්සි හරහා අසම්පූර්ණ පින්තූර: Netty හි ලිවීම සම්පූර්ණ වීම පරීක්ෂා කරන්න
ප්රොක්සි හරහා පින්තූර අසම්පූර්ණ ලෙස පැමිණෙන විට, අසමමුහුර්ත ප්රතිචාර ලිවීම අවසන් වීමට පෙර මූලාශ්රය එහි Netty නාලිකාව වසා දමන්නේදැයි පරීක්ෂා කරන්න.
පින්තූරයක් වේගවත් සෘජු සම්බන්ධතාවයක ක්රියා කරයි, නමුත් අඩු වේගයේ forward ප්රොක්සියක් හරහා අසම්පූර්ණ වේ. හැකි හේතුවක් නම් මූලාශ්රය එහි ප්රතිචාරය තවම ලියමින් පවතින විට සම්බන්ධතාවය වසා දැමීමයි.
Netty I/O අසමමුහුර්ත වේ. writeAndFlush වෙතින් ආපසු පැමිණීම එම ක්රියාවලිය සම්පූර්ණ වී ඇති බව අදහස් නොවේ. එබැවින් පෝලිමේ තවම බයිට් ඇති ප්රතිචාරයක් සඳහා මෙම අනුපිළිවෙල ආරක්ෂිත නොවේ:
ctx.writeAndFlush(response);
ctx.close();
HTTP හුවමාරුව එහි අවසන් ප්රතිචාර පණිවිඩයෙන් පසු හිතාමතා වසා දමන විට, වසා දැමීම එම ලිවීමේ future වෙත සම්බන්ධ කරන්න:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
මෙම කොටස උපකල්පනය කරන්නේ ප්රතිචාරය දැනටමත් නිවැරදිව ගොඩනගා රාමු කර ඇති බවයි. ධාරා ලෙස යවන ලද body සඳහා ශීර්ෂ ලිවීම නොව එහි අවසන් පණිවිඩයේ සම්පූර්ණ වීම භාවිත කරන්න. ස්ථිර HTTP සම්බන්ධතාවයක් සඳහා ප්රතිචාරයක් අවසන් වූ නිසා පමණක් වසා දැමීමක් එකතු නොකරන්න.
යෙදුමේ සාමාන්ය දෝෂ කළමනාකරණයේ කොටසක් ලෙස future හි අසාර්ථකත්වය පරීක්ෂා කරන්න. සම්පූර්ණ වීමට අසාර්ථකත්වය සහ අවලංගු කිරීමද ඇතුළත් වේ, එබැවින් සම්පූර්ණ වීම පමණක් බ්රවුසරයෙන් බෙදාහැරීමේ රිසිට්පතක් නොවේ.
ප්රයෝජනවත් සංසන්දනය වන්නේ එක් එක් මාර්ගයේ සම්පූර්ණ ප්රතිචාර දිග සහ ලිවීමේ ප්රතිඵලයයි. ප්රොක්සියට කාලය ප්රමාණවත් ලෙස වෙනස් කර පවතින ජීවන චක්ර දෝෂයක් හෙළිදරව් කළ හැක; එහි පැවැත්ම එහි සම්පීඩකය හෝ හැඹිලිය බයිට් ඉවත දැමූ බව ඔප්පු නොකරයි.