ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଅସମ୍ପୂର୍ଣ୍ଣ ଚିତ୍ର: Netty ର ଲେଖା ସମାପ୍ତି ଯାଞ୍ଚ କରନ୍ତୁ
ଯେତେବେଳେ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଚିତ୍ର ଅସମ୍ପୂର୍ଣ୍ଣ ଆସେ, ଓରିଜିନ ଅସିଙ୍କ୍ରୋନସ୍ ପ୍ରତିକ୍ରିୟା ଲେଖା ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପୂର୍ବରୁ ଏହାର Netty ଚ୍ୟାନେଲ ବନ୍ଦ କରୁଛି କି ନାହିଁ ଯାଞ୍ଚ କରନ୍ତୁ।
ଏକ ଚିତ୍ର ଦ୍ରୁତ ସିଧା ସଂଯୋଗରେ କାମ କରେ, କିନ୍ତୁ ମନ୍ଥର ଫରୱାର୍ଡ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଅସମ୍ପୂର୍ଣ୍ଣ ଆସେ। ଏକ ସମ୍ଭାବ୍ୟ କାରଣ ହେଉଛି ଓରିଜିନ ସଂଯୋଗ ବନ୍ଦ କରେ ଯେତେବେଳେ ଏହାର ପ୍ରତିକ୍ରିୟା ଏବେ ମଧ୍ୟ ଲେଖାଯାଉଛି।
Netty I/O ଅସିଙ୍କ୍ରୋନସ୍। writeAndFlush ରୁ ଫେରିବାର ଅର୍ଥ ସେହି କାର୍ଯ୍ୟ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି ନୁହେଁ। ତେଣୁ ଯେଉଁ ପ୍ରତିକ୍ରିୟାରେ ଏବେ ମଧ୍ୟ ଧାଡ଼ିରେ ବାଇଟ୍ ଅଛି ସେଥିପାଇଁ ଏହି କ୍ରମ ସୁରକ୍ଷିତ ନୁହେଁ:
ctx.writeAndFlush(response);
ctx.close();
ଯେତେବେଳେ HTTP ବିନିମୟ ଏହାର ଶେଷ ପ୍ରତିକ୍ରିୟା ସନ୍ଦେଶ ପରେ ଉଦ୍ଦେଶ୍ୟମୂଳକ ଭାବରେ ବନ୍ଦ ହେଉଛି, ବନ୍ଦକୁ ସେହି ଲେଖାର future ସହିତ ସଂଯୋଗ କରନ୍ତୁ:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
ଏହି ଅଂଶ ଧରି ନେଇଛି ଯେ ପ୍ରତିକ୍ରିୟା ପୂର୍ବରୁ ସଠିକ୍ ଭାବରେ ନିର୍ମିତ ଓ ଫ୍ରେମ୍ ହୋଇଛି। ଷ୍ଟ୍ରିମ୍ ହୋଇଥିବା ବଡି ପାଇଁ ହେଡରର ଲେଖା ନୁହେଁ, ଏହାର ଶେଷ ସନ୍ଦେଶର ସମାପ୍ତି ବ୍ୟବହାର କରନ୍ତୁ। ସ୍ଥାୟୀ HTTP ସଂଯୋଗ ପାଇଁ, କେବଳ ପ୍ରତିକ୍ରିୟା ଶେଷ ହେଲା ବୋଲି ବନ୍ଦ ଯୋଡ଼ନ୍ତୁ ନାହିଁ।
ଆପ୍ଲିକେସନର ସାଧାରଣ ତ୍ରୁଟି ପରିଚାଳନାର ଅଂଶ ଭାବରେ future ର ବିଫଳତା ଯାଞ୍ଚ କରନ୍ତୁ। ସମାପ୍ତିରେ ବିଫଳତା ଓ ବାତିଲ ମଧ୍ୟ ଅନ୍ତର୍ଭୁକ୍ତ, ତେଣୁ କେବଳ ସମାପ୍ତି ବ୍ରାଉଜରରୁ ବିତରଣ ରସିଦ ନୁହେଁ।
ଉପଯୋଗୀ ତୁଳନା ହେଉଛି ପ୍ରତ୍ୟେକ ପଥରେ ସମ୍ପୂର୍ଣ୍ଣ ପ୍ରତିକ୍ରିୟା ଲମ୍ବ ଓ ଲେଖାର ଫଳାଫଳ। ପ୍ରକ୍ସି ସମୟକୁ ଯଥେଷ୍ଟ ବଦଳାଇ ପାରେ ଯାହାଫଳରେ ବିଦ୍ୟମାନ ଜୀବନଚକ୍ର ତ୍ରୁଟି ପ୍ରକାଶ ପାଏ; ଏହାର ଉପସ୍ଥିତି ପ୍ରମାଣ କରେ ନାହିଁ ଯେ ଏହାର କମ୍ପ୍ରେସର କିମ୍ବା କ୍ୟାସ୍ ବାଇଟଗୁଡ଼ିକୁ ଫୋପାଡ଼ି ଦେଇଛି।