502 খারাপ গেটওয়ে - DecompressionFailureAtResponse

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

এপিআই কলের প্রতিক্রিয়া হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশনটি 502 Bad Gateway HTTP স্ট্যাটাস কোড এবং messaging.adaptors.http.flow.DecompressionFailureAtResponse এরর কোড পায়।

ত্রুটির বার্তা

ক্লায়েন্ট অ্যাপ্লিকেশনটি নিম্নলিখিত প্রতিক্রিয়া কোডটি পায়:

HTTP/1.1 502 Bad Gateway

এছাড়াও, আপনি নীচে দেখানোটির মতো একটি ত্রুটি বার্তা দেখতে পারেন:

{
   "fault":{
      "faultstring":"Decompression failure at response",
      "detail":{
         "errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"
      }
   }
}

সম্ভাব্য কারণসমূহ

এই ত্রুটিটি শুধুমাত্র তখনই ঘটে যদি:

  • HTTP রেসপন্সের (ব্যাকএন্ড/টার্গেট সার্ভার থেকে প্রাপ্ত) হেডার Content-Encoding এ নির্দিষ্ট করা এনকোডিংটি বৈধ এবং Apigee Edge দ্বারা সমর্থিত
  • কিন্তু

  • HTTP রেসপন্সের অংশ হিসেবে ব্যাকএন্ড/টার্গেট সার্ভার কর্তৃক প্রেরিত পেলোড ফরম্যাটটি Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিং ফরম্যাটের সাথে মেলে না।

এর কারণ হলো, Apigee Edge নির্দিষ্ট এনকোডিং ব্যবহার করে পেলোডটি ডিকোড করতে ব্যর্থ হয়, যেহেতু পেলোডের ফরম্যাটটি Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিংয়ের ফরম্যাটের মতো নয়।

এখানে সমর্থিত Content-Encoding মানগুলির কয়েকটি উদাহরণ এবং সেই ক্ষেত্রে Apigee Edge পেলোড উপস্থাপনাটি কেমন হবে বলে আশা করে, তা দেওয়া হলো:

দৃশ্যকল্প বিষয়বস্তু-এনকোডিং পেলোড উপস্থাপনা
একক এনকোডিং জিজিপ

ইউনিক্স gzip ফরম্যাট।

RFC1952 GZIP ফরম্যাট দেখুন।

একক এনকোডিং স্ফীত করা

এই ফরম্যাটটি ডিফ্লেট কম্প্রেশন অ্যালগরিদমের সাথে zlib কাঠামো ব্যবহার করে।

RFC1950 এবং RFC1951 দেখুন .

একাধিক এনকোডিং

একাধিক এনকোডিং

উদাহরণস্বরূপ, যখন এনকোডিং দুইবার করা হয়, তখন তা হতে পারে:

  • gzip, deflate
  • জিজিপ, জিজিপ
  • ডিফ্লেট, জিজিপ
  • চুপসে যাওয়া, চুপসে যাওয়া
হেডারে প্রদর্শিত ক্রমানুসারে পেলোডের উপর একাধিক এনকোডিং প্রয়োগ করা হয়েছে।

এই ত্রুটির সম্ভাব্য কারণগুলো নিম্নরূপ:

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
রেসপন্স পেলোড ফরম্যাট কন্টেন্ট-এনকোডিং এর সাথে মেলে না। ব্যাকএন্ড/টার্গেট সার্ভার থেকে পাঠানো রেসপন্স পেলোডের ফরম্যাটটি হয় এনকোড করা নেই অথবা Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিংয়ের সাথে মেলে না। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:

এপিআই মনিটরিং

এপিআই মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. উপযুক্ত ভূমিকা সম্পন্ন একজন ব্যবহারকারী হিসেবে Apigee Edge UI-তে সাইন ইন করুন
  2. যে প্রতিষ্ঠানে আপনি বিষয়টি তদন্ত করতে চান, সেখানে যান।

  3. Analyze > API Monitoring > Investigate পৃষ্ঠায় যান।
  4. সেই নির্দিষ্ট সময়সীমাটি নির্বাচন করুন যার মধ্যে আপনি ত্রুটিগুলো লক্ষ্য করেছেন।
  5. নিশ্চিত করুন যে প্রক্সি ফিল্টারটি ‘সকল’ (All) এ সেট করা আছে।
  6. সময়ের সাপেক্ষে ফল্ট কোডের লেখচিত্র অঙ্কন করুন।
  7. নীচে দেখানো অনুযায়ী, যে সেলটিতে messaging.adaptors.http.flow.DecompressionFailureAtResponse ফল্ট কোডটি রয়েছে, সেটি নির্বাচন করুন:

    ( বড় ছবি দেখুন )

  8. messaging.adaptors.http.flow.DecompressionFailureAtResponse ফল্ট কোড সম্পর্কিত তথ্য নিচে দেখানো অনুযায়ী প্রদর্শিত হয়:

    ( বড় ছবি দেখুন )

  9. 'View logs'-এ ক্লিক করুন এবং 502 এরর-এর কারণে ফেইল হওয়া সারিটি এক্সপ্যান্ড করুন।

    ( বড় ছবি দেখুন )

  10. লগস উইন্ডো থেকে নিম্নলিখিত বিবরণগুলো নোট করুন:
    • স্ট্যাটাস কোড: 502
    • ত্রুটির উৎস: target
    • ত্রুটি কোড: messaging.adaptors.http.flow.DecompressionFailureAtResponse .
  11. যদি ফল্ট সোর্সের মান ' target হয়, তাহলে তা নির্দেশ করে যে রেসপন্স পেলোড ফরম্যাটটি ব্যাকএন্ড সার্ভারের রেসপন্স হেডার Content-Encoding -এ নির্দিষ্ট করা সমর্থিত এনকোডিংয়ের সাথে মেলেনি।

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশনটি সক্রিয় করুন এবং নিম্নলিখিতগুলির মধ্যে যেকোনো একটি:
    1. 502 Bad Gateway ত্রুটিটি ঘটার জন্য অপেক্ষা করুন, অথবা
    2. আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, তাহলে এপিআই কলটি করুন এবং 502 Bad Gateway ত্রুটিটি পুনরায় দেখান।
  2. নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

  3. ব্যর্থ প্রতিক্রিয়াগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. সাধারণত, নিচে দেখানো অনুযায়ী, টার্গেট সার্ভার থেকে রেসপন্স পাওয়ার (Response Received from target server) ধাপের ঠিক পরেই একটি ফ্লো-তে ত্রুটিটি খুঁজে পাওয়া যায়:

    ( বড় ছবি দেখুন )

  6. ট্রেস থেকে প্রপার্টিগুলোর মানগুলো লক্ষ্য করুন:

    • কন্টেন্ট-এনকোডিং: gzip
    • রেসপন্স কন্টেন্ট বডি: {"fault":{"faultstring":"Decompression failure at response","detail":{"errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"}}}
  7. টার্গেট সার্ভার থেকে প্রতিক্রিয়া প্রাপ্ত পর্বের ঠিক পরেই ত্রুটি পর্বে যান:

    ( বড় ছবি দেখুন )

    বৈশিষ্ট্যগুলো লক্ষ্য করুন:

    • ত্রুটি: Decompression failure at response
    • error.class: com.apigee.errors.http.server.BadGateway
    • ত্রুটির কারণ: Not in GZIP format

      error.cause- এ বলা হয়েছে যে রেসপন্স পেলোডটি GZIP ফরম্যাটে নেই। এর মানে হলো, Apigee Edge আশা করছিল যে রেসপন্স পেলোডটি GZIP ফরম্যাটে থাকবে, যেমনটি Content-Encoding হেডারে (যা আগের ধাপে নির্ধারণ করা হয়েছিল) উল্লেখ করা ছিল। তাই, Apigee Edge gzip ব্যবহার করে পেলোডটি ডিকম্প্রেস করতে পারছে না এবং Decompression failure at response ত্রুটিটি দেখাচ্ছে।

    উল্লেখ্য যে, এই ক্ষেত্রে টার্গেট/ব্যাকএন্ড সার্ভার থেকে প্রাপ্ত রেসপন্সটি হলো 200 ; কিন্তু ক্লায়েন্ট অ্যাপ্লিকেশনটি একটি 502 রেসপন্স পাবে, কারণ এররটি Apigee Edge দ্বারা রিটার্ন করা হয়েছে।

  8. ট্রেস-এ থাকা 'Response Sent to Client' পর্যায়ে যান এবং এটিতে ক্লিক করুন।

    ( বড় ছবি দেখুন )

    ট্রেস থেকে নিম্নলিখিত বিবরণগুলো লক্ষ্য করুন:

    • স্ট্যাটাস কোড: 502 Bad Gateway
    • ত্রুটির বিবরণ: {"fault":{"faultstring":"Decompression failure at response","detail":{"errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"}}}
  9. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ড করা হয়েছে) পর্যায়ে যান এবং এটিতে ক্লিক করুন।

  10. Phase Details , Error Headers সেকশনে স্ক্রল ডাউন করুন এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

    ( বড় ছবি দেখুন )

  11. আপনি X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান messaging.adaptors.http.flow.DecompressionFailureAtResponse এবং target হিসেবে দেখতে পাবেন, যা নির্দেশ করে যে রেসপন্স পেলোড ফরম্যাটটি Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিংয়ের সাথে মেলেনি।
    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড messaging.adaptors.http.flow.DecompressionFailureAtResponse
    এক্স-এপিজি-ফল্ট-সোর্স target

এনজিআইএনএক্স

NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 502 ত্রুটি সম্পর্কিত গুরুত্বপূর্ণ তথ্য জানতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন।
  2. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:

    /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

    যেখানে: ORG , ENV , এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।

  3. একটি নির্দিষ্ট সময়কালের মধ্যে কোনো 502 ত্রুটি আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো প্রতিক্রিয়া 502 কারণে ব্যর্থ হচ্ছে কিনা তা অনুসন্ধান করে দেখুন।
  4. যদি আপনি messaging.adaptors.http.flow.DecompressionFailureAtResponse এর মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো 502 ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source-এর মান নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত একটি নমুনা ৫০২ এরর:

    NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:

    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড messaging.adaptors.http.flow.DecompressionFailureAtResponse
    এক্স-এপিজি-ফল্ট-সোর্স target

কারণ: রেসপন্স পেলোড ফরম্যাট কন্টেন্ট-এনকোডিং এর সাথে মেলে না।

ডিফল্টরূপে, যদি রেসপন্স হেডার Content-Encoding একটি বৈধ এবং সমর্থিত এনকোডিং থাকে, তাহলে Apigee Edge সর্বদা পেলোডটি ডিকম্প্রেস করে। অতএব, আশা করা হয় যে রেসপন্স পেলোডের ফরম্যাটটি রেসপন্স হেডার Content-Encoding এ নির্দিষ্ট করা এনকোডিংয়ের সাথে মিলবে । যদি কোনো অমিল থাকে, তাহলে আপনি এই এররটি পাবেন।

রোগ নির্ণয়

  1. সাধারণ রোগ নির্ণয়ের ধাপগুলিতে ব্যাখ্যা করা অনুযায়ী API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে পরিলক্ষিত ত্রুটির জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ধারণ করুন।
  2. যদি ফল্ট কোডটি messaging.adaptors.http.flow.DecompressionFailureAtResponse হয় এবং ফল্ট সোর্সের মান target হয়, তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড/টার্গেট সার্ভার দ্বারা প্রেরিত রেসপন্স পেলোডের ফরম্যাটটি রেসপন্স হেডার Content-Encoding এ নির্দিষ্ট করা সমর্থিত এনকোডিংয়ের সাথে মেলে না।
  3. আপনি নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে HTTP রেসপন্সের অংশ হিসেবে অমিলটি নির্ণয় করতে পারেন:

    ত্রুটির বার্তা

    ত্রুটির বার্তা ব্যবহার করে যাচাই করতে:

    1. আপনার কাছে যদি Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ এরর মেসেজটি থাকে, তাহলে faultstring টি দেখুন।

      নমুনা ত্রুটি বার্তা:

      "faultstring":"Decompression failure at response"
    2. উপরের ত্রুটি বার্তায় "Decompression failure at response" প্রদর্শিত হচ্ছে, যার অর্থ হলো Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিং ব্যবহার করে রেসপন্সটি ডিকম্প্রেস করা যায়নি।

    ট্রেস

    ট্রেস ব্যবহার করে যাচাই করতে:

    1. সাধারণ রোগনির্ণয় ধাপে বর্ণিত পদ্ধতি অনুযায়ী ট্রেস ব্যবহার করে কন্টেন্ট-টাইপ এবং ত্রুটির কারণ নির্ণয় করুন।
    2. স্যাম্পল ট্রেস থেকে প্রাপ্ত মানগুলো নিম্নরূপ:

      • কন্টেন্ট-এনকোডিং: gzip
      • ত্রুটির কারণ: Not in GZIP format

      রেসপন্স হেডার Content-Encoding- এর ভ্যালুটি gzip ; কিন্তু রেসপন্স পেলোডটি GZIP ফরম্যাটে নেই (যেমনটি error.cause দ্বারা নির্দেশিত)। তাই, Apigee Edge 502 Bad Gateway এবং messaging.adaptors.http.flow.DecompressionFailureAtResponse এরর কোড দিয়ে রেসপন্স করে।

    প্রকৃত অনুরোধ

    প্রকৃত অনুরোধ ব্যবহার করে যাচাই করতে:

    টার্গেট/ব্যাকএন্ড সার্ভার অ্যাপ্লিকেশনে করা প্রকৃত অনুরোধটি যদি আপনার কাছে থাকে, তাহলে নিম্নলিখিত ধাপগুলো অনুসরণ করুন:

    1. আপনি যদি একজন পাবলিক ক্লাউড/প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে সরাসরি ব্যাকএন্ড সার্ভার থেকেই অথবা এমন কোনো মেশিন থেকে অনুরোধ করুন যেখান থেকে ব্যাকএন্ড সার্ভারে অনুরোধ করার অনুমতি আপনার রয়েছে।
    2. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে আপনি মেসেজ প্রসেসরগুলোর যেকোনো একটি থেকেও ব্যাকএন্ড সার্ভারে অনুরোধ পাঠাতে পারেন।
    3. ব্যাকএন্ড সার্ভার থেকে পাঠানো প্রতিক্রিয়াটি পরীক্ষা করুন এবং প্রতিক্রিয়া হেডার Content-Encoding.
    4. অনুরোধের অংশ হিসেবে পাঠানো পেলোডের ফরম্যাট নির্ধারণ করুন।
    5. যদি Content-Encoding হেডারের মান সমর্থিত এনকোডিংয়ের তালিকায় থাকে, কিন্তু রেসপন্স পেলোডের ফরম্যাট Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিংয়ের সাথে না মেলে, তাহলে সেটাই সমস্যার কারণ।

      নমুনা:

      curl -v https://HOSTALIAS/test
      

      ***trimmed***
      >
      < HTTP/1.1 200 OK
      < Accept-Ranges: bytes
      < Content-Encoding: gzip
      < Date: Mon, 02 Aug 2021 08:17:35 GMT
      < Transfer-Encoding: chunked
      <
      < response_payload.zip Response Body(not in GZIP format)>
      

      উপরের নমুনা প্রতিক্রিয়াটি Content-Encoding হেডারে gzip ভ্যালুটি পাঠায়, যা Apigee Edge-এ একটি সমর্থিত এনকোডিং । তবে, response_payload.zip কে একটি zip ফাইল হিসেবে পাঠানো হয়। ফলে, এই প্রতিক্রিয়াটি messaging.adaptors.http.flow.DecompressionFailureAtResponse এরর কোড সহ একটি 502 Bad Gateway এরর দিয়ে ব্যর্থ হয়।

    মেসেজ প্রসেসর লগ

    মেসেজ প্রসেসর লগ ব্যবহার করে যাচাই করতে:

    আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 502 ত্রুটি সম্পর্কিত মূল তথ্য নির্ধারণ করতে মেসেজ প্রসেসর লগ ব্যবহার করতে পারেন।

    1. মেসেজ প্রসেসর লগটি পরীক্ষা করুন:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. একটি নির্দিষ্ট সময়কালে কোনো 502 ত্রুটি আছে কিনা (যদি সমস্যাটি অতীতে ঘটে থাকে) অথবা এখনও কোনো প্রতিক্রিয়া 502 ত্রুটির কারণে ব্যর্থ হচ্ছে কিনা তা অনুসন্ধান করুন। আপনি নিম্নলিখিত সার্চ স্ট্রিংটি ব্যবহার করতে পারেন:

      grep -ri "ZipException"
      
    3. আপনি system.log-এ নিম্নলিখিতগুলির মতো লাইন খুঁজে পাবেন:

      দৃশ্যকল্প #১

      দৃশ্যকল্প #১: যখন এপিআই রেসপন্সে Content-Encoding: gzip হেডারটি থাকে

      2021-08-02 06:50:25,433  NIOThread@2 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :  ClientInputChannel(ClientChannel[Connected:
      Remote:3.8.1.1:9000 Local:10.0.115.32:41298]@38140 useCount=1 bytesRead=0
      bytesWritten=203 age=469ms  lastIO=0ms  isOpen=true).onExceptionRead exception: {}
      java.util.zip.ZipException: Not in GZIP format
      ---trimmed--
      2021-08-02 06:50:25,433  NIOThread@2 INFO  HTTP.CLIENT -
      HTTPClient$Context.logContextDetails() : Request details : host=null
      path=/folder/testFile method=GET. Channel details : Bytes read=0
      2021-08-02 06:50:25,434  NIOThread@2 ERROR ADAPTORS.HTTP.FLOW -
      AbstractResponseListener.onException() : AbstractResponseListener.onError(HTTPResponse@4806fdab, Not in GZIP format)
      2021-08-02 06:50:25,434  NIOThread@2 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception
      java.util.zip.ZipException: Not in GZIP format
      occurred while writing to channel null
      2021-08-02 06:50:25,434  NIOThread@2 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception trace:
      java.util.zip.ZipException: Not in GZIP format
      

      উপরের এরর মেসেজে থাকা java.util.zip.ZipException: Not in GZIP format লাইনটি নির্দেশ করে যে, Content-Encoding হিসেবে gzip নির্দিষ্ট করা সত্ত্বেও রেসপন্স পেলোডটি GZIP ফরম্যাটে পাঠানো হয়নি। তাই, Apigee Edge এক্সেপশনটি থ্রো করে এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলোতে messaging.adaptors.http.flow.DecompressionFailureAtResponse ফল্ট কোডসহ একটি 502 স্ট্যাটাস কোড রিটার্ন করে।

      দৃশ্যকল্প #২

      দৃশ্যকল্প #২: যখন API রেসপন্সে Content-Encoding: deflate হেডারটি থাকে

      2021-08-02 06:35:21,215  NIOThread@0 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :  ClientInputChannel(ClientChannel[Connected:
      Remote:3.8.1.1:9000 Local:192.168.194.140:35224]@36014 useCount=1 bytesRead=0
      bytesWritten=202 age=439ms  lastIO=2ms  isOpen=true).onExceptionRead exception: {}
      java.util.zip.ZipException: incorrect header check
      ---trimmed----
      Caused by:
      java.util.zip.DataFormatException: incorrect header check
      ---trimmed---
      2021-08-02 06:35:21,215  NIOThread@0 INFO  HTTP.CLIENT -
      HTTPClient$Context.logContextDetails() : Request details :
      host=null path=/folder/testFile method=GET. Channel details : Bytes read=0
      2021-08-02 06:35:21,216  NIOThread@0 ERROR ADAPTORS.HTTP.FLOW -
      AbstractResponseListener.onException() : AbstractResponseListener.onError(HTTPResponse@3966e277,
      incorrect header check)
      2021-08-02 06:35:21,216  NIOThread@0 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception
      java.util.zip.ZipException: incorrect header check occurred while writing to channel null
      2021-08-02 06:35:21,217  NIOThread@0 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception trace:
      java.util.zip.ZipException: incorrect header check
      
      

      উপরের এরর মেসেজে থাকা java.util.zip.ZipException: incorrect header check এবং Caused by: java.util.zip.DataFormatException: incorrect header check লাইনগুলো নির্দেশ করে যে, রেসপন্স পেলোডটি ডিফ্লেট ফরম্যাটে পাঠানো হয়নি এবং এটি ডিফ্লেটের Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিংয়ের সাথে মেলে না। তাই, Apigee Edge এক্সেপশনটি থ্রো করে এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলোতে messaging.adaptors.http.flow.DecompressionFailureAtResponse ফল্ট কোডসহ একটি 502 স্ট্যাটাস কোড রিটার্ন করে।

সমাধান

  1. Apigee Edge-এর API প্রক্সি ফ্লোতে এবং ব্যাকএন্ড সার্ভারে যদি কম্প্রেসড রেসপন্স পেলোডের প্রয়োজন না থাকে, তাহলে Content-Encoding হেডারটি পাস করবেন না । যদি রেসপন্স পেলোড কম্প্রেস করার প্রয়োজন হয়, তাহলে ধাপ ২-এ যান।
  2. যদি রেসপন্স পেলোড সংকুচিত করার প্রয়োজন হয়, তাহলে নিশ্চিত করুন যে ব্যাকএন্ড সার্ভার সর্বদা নিম্নলিখিতগুলি পাঠায়:
    • রেসপন্সের Content-Encoding হেডারের ভ্যালু হিসেবে যেকোনো সমর্থিত এনকোডিং ব্যবহার করা যাবে।
    • Apigee Edge-এ সমর্থিত ফরম্যাটে থাকা রেসপন্স পেলোডটি Content-Encoding হেডারে নির্দিষ্ট করা এনকোডিং ফরম্যাটের সাথে মেলে।
  3. উপরে আলোচিত উদাহরণে, রেসপন্স পেলোডটি ZIP ফরম্যাটে আছে, কিন্তু রেসপন্স হেডারে Content-Encoding: gzip উল্লেখ করা আছে। আপনি রেসপন্স হেডারটি Content-Encoding: gzip হিসেবে এবং রেসপন্স পেলোডটি gzip ফরম্যাটে পাঠিয়ে সমস্যাটি সমাধান করতে পারেন:
    curl -v https://HOSTALIAS/v1/test
    
    >
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Content-Encoding: gzip
    < Date: Mon, 02 Aug 2021 08:17:35 GMT
    < Transfer-Encoding: chunked
    <
    < response_payload.gz Response Body(in GZIP format)>
    

স্পেসিফিকেশন

নিম্নলিখিত RFC স্পেসিফিকেশন অনুসারে, Apigee Edge 502 Bad Gateway স্ট্যাটাস কোড এবং messaging.adaptors.http.flow.DecompressionFailureAtResponse এরর কোড সহ সাড়া দেয়:

স্পেসিফিকেশন
আরএফসি ৭২৩১, ধারা ৬.৫.১
আরএফসি ৭২৩১, ধারা ৩.১.২.২

আপনার যদি এখনও Apigee Support-এর কাছ থেকে কোনো সাহায্যের প্রয়োজন হয়, তাহলে Must gather diagnostic information- এ যান।

রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন, এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন:

আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • সংস্থার নাম
  • পরিবেশের নাম
  • এপিআই প্রক্সি নাম
  • 502 ত্রুটিটি পুনরুৎপাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড।
  • এপিআই প্রতিক্রিয়াগুলির ট্রেস ফাইল

আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • ব্যর্থ প্রতিক্রিয়াগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
  • পরিবেশের নাম
  • এপিআই প্রক্সি বান্ডেল
  • এপিআই প্রতিক্রিয়াগুলির ট্রেস ফাইল
  • NGINX অ্যাক্সেস লগ /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

    যেখানে: ORG , ENV এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।

  • মেসেজ প্রসেসর সিস্টেম লগ /opt/apigee/var/log/edge-message-processor/logs/system.log