এক্সট্র্যাক্ট ভেরিয়েবল রানটাইম ত্রুটি সমস্যা সমাধান

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

উৎস বার্তা উপলব্ধ নয়

ত্রুটি কোড

steps.extractvariables.SourceMessageNotAvailable

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
  "fault": {
      "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
      "detail": {
          "errorcode": "steps.extractvariables.SourceMessageNotAvailable"
      }
  }
}

কারণ

এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <Source> এলিমেন্টে নির্দিষ্ট করা মেসেজ ভ্যারিয়েবলটি যদি নিম্নলিখিতগুলির মধ্যে কোনো একটি হয়, তাহলে এই ত্রুটিটি ঘটে:

  • আওতার বাইরে (যে নির্দিষ্ট কার্যপ্রবাহে নীতিমালাটি কার্যকর করা হচ্ছে সেখানে উপলব্ধ নয়) অথবা
  • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত নয়)

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি রিকোয়েস্ট ফ্লোতে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি কার্যকর হয়, কিন্তু <Source> এলিমেন্টটিকে response বা error ভ্যারিয়েবলে সেট করা হয়, যা রিকোয়েস্ট ফ্লোতে বিদ্যমান নেই।

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটিটি ঘটেছে সেটি এবং যে ভ্যারিয়েবলটি পাওয়া যাচ্ছে না তার নাম শনাক্ত করুন। আপনি এই দুটি বিষয়ই এরর রেসপন্স-এর faultstring এলিমেন্টে খুঁজে পাবেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, পলিসির নাম হলো ExtractVariables-1 এবং ভ্যারিয়েবলটি হলো response :

    "faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"

  2. ব্যর্থ হওয়া এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি XML-এ, যাচাই করুন যে <variable> এলিমেন্টে সেট করা ভ্যারিয়েবলের নামটি ফল্ট স্ট্রিং-এ (উপরের ধাপ #১) চিহ্নিত ভ্যারিয়েবলের নামের সাথে মেলে কিনা। উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি <variable> এলিমেন্টে ` response নামের একটি ভ্যারিয়েবল নির্দিষ্ট করে, যা ফল্ট স্ট্রিং-এর সাথে মিলে যায়:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. <Source> এলিমেন্টে ব্যবহৃত ভেরিয়েবলটি সেই ফ্লো-তে সংজ্ঞায়িত এবং উপলব্ধ আছে কিনা তা নির্ধারণ করুন, যেখানে Extract Variables পলিসিটি কার্যকর করা হচ্ছে।

  4. যদি ভেরিয়েবলটি হয়:

    • আওতার বাইরে (যে নির্দিষ্ট কার্যপ্রবাহে নীতিমালাটি কার্যকর করা হচ্ছে সেখানে উপলব্ধ নয়) অথবা
    • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত নয়)

    তাহলে এটাই ত্রুটির কারণ।

    উদাহরণস্বরূপ, ধরা যাক উপরে দেখানো এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি রিকোয়েস্ট ফ্লো-তে কার্যকর হয়। মনে রাখবেন যে, response ভ্যারিয়েবলটি এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <Source> এলিমেন্টে ব্যবহৃত হয়। response ভ্যারিয়েবলটি শুধুমাত্র রেসপন্স ফ্লো-তেই উপলব্ধ থাকে।

    যেহেতু রিকোয়েস্ট ফ্লোতে response ভ্যারিয়েবলটি বিদ্যমান নেই, তাই আপনি এই এরর কোডটি পাচ্ছেন: steps.extractvariables.SourceMessageNotAvailable

সমাধান

নিশ্চিত করুন যে, ব্যর্থ হওয়া ‘এক্সট্র্যাক্ট ভ্যারিয়েবলস’ পলিসির <Source> এলিমেন্টে সেট করা ভ্যারিয়েবলটি, পলিসিটি যে ফ্লো-তে এক্সিকিউট হয় সেখানে সংজ্ঞায়িত এবং বিদ্যমান আছে।

উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি সংশোধন করতে, আপনি <Source> এলিমেন্টটি পরিবর্তন করে রিকোয়েস্ট ফ্লোতে থাকা request ভ্যারিয়েবলটি ব্যবহার করতে পারেন:

<ExtractVariables name="ExtractVariables-1">
    <Source>request</Source>
    <URIPath>
        <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
    </URIPath>
    <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

সেটভেরিয়েবল ব্যর্থ হয়েছে

ত্রুটি কোড

steps.extractvariables.SetVariableFailed

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.SetVariableFailed"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি 'এক্সট্র্যাক্ট ভ্যারিয়েবলস' পলিসি কোনো ভ্যারিয়েবলের মান সেট করতে না পারে। এটি সাধারণত তখন ঘটে যখন আপনি নেস্টেড ডট-সেপারেটেড ফরম্যাটে একাধিক ভ্যারিয়েবলে মান নির্ধারণ করার চেষ্টা করেন, যাদের নাম একই শব্দ দিয়ে শুরু হয়।

উদাহরণস্বরূপ, ধরা যাক আপনি var.color নামে একটি ভেরিয়েবল তৈরি করলেন বা তাতে একটি মান অ্যাসাইন করলেন। এক্ষেত্রে, color একটি অবজেক্ট নোড হিসেবে অ্যালোকেট করা হয়। এরপর যদি আপনি var.color.next নামে অন্য একটি ভেরিয়েবলে মান অ্যাসাইন করার চেষ্টা করেন, তবে তা ব্যর্থ হবে, কারণ color ইতিমধ্যেই অ্যালোকেট করা হয়েছে এবং এতে অন্য কোনো ভেরিয়েবল অ্যালোকেট করার অনুমতি নেই।

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটিটি ঘটেছে তা শনাক্ত করুন এবং সেই ভ্যারিয়েবলটির নাম খুঁজে বের করুন যার মান সেট করা যায়নি। আপনি এই দুটি বিষয়ই এরর রেসপন্সের faultstring ) এলিমেন্টে খুঁজে পাবেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ, পলিসির নাম হলো ExtractColors এবং ভ্যারিয়েবলটি হলো var.color.next :

    "faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"

  2. ব্যর্থ হওয়া 'Extract Variables' পলিসি XML-এ, যাচাই করুন যে ভেরিয়েবলের নামটি ফল্ট স্ট্রিং-এ (উপরের ধাপ #১) চিহ্নিত ভেরিয়েবলের নামের সাথে মেলে কিনা। উদাহরণস্বরূপ, নিম্নলিখিত পলিসিটি একটি রিকোয়েস্ট কোয়েরি প্যারামিটার থেকে var.color.next নামের একটি ভেরিয়েবলে একটি মান অ্যাসাইন করার চেষ্টা করে (যে মানটি ফল্ট স্ট্রিং-এ দেখা যায়):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{color.next}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
  3. ব্যর্থ হওয়া 'এক্সট্র্যাক্ট ভ্যারিয়েবলস' পলিসিতে ব্যবহৃত সমস্ত ভ্যারিয়েবলের নাম পরীক্ষা করুন। যদি আপনি অন্য কোনো ভ্যারিয়েবলে এমন কোনো মান নির্ধারণ করে থাকেন যার নাম ফল্ট স্ট্রিং-এ (উপরের ধাপ #১) চিহ্নিত ভ্যারিয়েবলের নামের সাথে একই রকমভাবে শুরু হয়, তাহলে সেটাই এই ত্রুটির কারণ।

    উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে, লক্ষ্য করুন যে:

    • color নামক কোয়েরি প্যারামিটারের মান প্রথমে var.color নামক একটি ভেরিয়েবলে অ্যাসাইন করা হয়। var.color ( দ্রষ্টব্য: <VariablePrefix> এলিমেন্টে সেট করা অনুযায়ী var হলো সকল ভেরিয়েবলের প্রিফিক্স)
    • পরবর্তী অ্যাসাইনমেন্টে, nextcolor কোয়েরি প্যারামিটারের মান var.color.next নামক আরেকটি ভেরিয়েবলে অ্যাসাইন করা হয়।
    • যেহেতু var.color ইতিমধ্যেই বরাদ্দ করা হয়েছে, তাই Extract Variables পলিসি var.color.next নামে আরেকটি নেস্টেড ভ্যারিয়েবল বরাদ্দ করতে পারে না। ফলে আপনি steps.extractvariables.SetVariableFailed এই এরর কোডটি পান।

সমাধান

  1. নিশ্চিত করুন যে আপনার একাধিক ভেরিয়েবলের নাম নেই, যেগুলো একই শব্দ দিয়ে শুরু হয় এবং ডট-সেপারেটেড ফরম্যাটে নেস্টেড অবস্থায় থাকে।

    উপরে দেখানো এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি সংশোধন করতে, আপনি var.color.next ভ্যারিয়েবল নামটি পরিবর্তন করে var.nextcolor.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{nextcolor}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
    

আরও তথ্য

আরও বিস্তারিত জানতে এই কমিউনিটি পোস্টটি দেখুন।

অবৈধJSONপথ

ত্রুটি কোড

steps.extractvariables.InvalidJSONPath

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
        "detail": {
            "errorcode": "steps.extractvariables.InvalidJSONPath"
        }
    }
}

কারণ

এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <JSONPath> এলিমেন্টে একটি অবৈধ JSON পাথ ব্যবহার করা হলে এই ত্রুটিটি ঘটে। উদাহরণস্বরূপ, যদি কোনো JSON পেলোডে Name অবজেক্টটি না থাকে, কিন্তু আপনি এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে পাথ হিসেবে Name উল্লেখ করেন, তাহলে এই ত্রুটিটি ঘটে।

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটি ঘটেছে এবং অবৈধ JSON পাথটি শনাক্ত করুন। আপনি এই দুটি আইটেমই এরর রেসপন্সের faultstring এলিমেন্টে খুঁজে পাবেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ, পলিসির নাম হলো ExtractJSONVariables এবং অবৈধ JSON পাথটি হলো $.Name :

    "faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."

  2. ব্যর্থ হওয়া এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি XML-এ, <JSONPath> এলিমেন্টে সেট করা JSON পাথটি ফল্ট স্ট্রিং-এ (উপরের ধাপ #১) চিহ্নিত পাথের সাথে মেলে কিনা তা যাচাই করুন। উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি $.Name JSON পাথটি নির্দিষ্ট করে, যা ফল্ট স্ট্রিং-এ যা আছে তার সাথে মিলে যায়:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.Name</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
  3. <Source> এলিমেন্টটি পরীক্ষা করুন এবং নির্ধারণ করুন যে আপনি কোন JSON পেলোড থেকে ভেরিয়েবলটি বের করার চেষ্টা করছেন। উদাহরণস্বরূপ, যদি <Source> এলিমেন্টটি request এ সেট করা থাকে, তাহলে পলিসিটি `request` অবজেক্ট থেকে JSON পেলোডটি বের করছে। আর যদি এটি response এ সেট করা থাকে, তাহলে সেটি হবে `response` অবজেক্ট।

    উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে, <Source> এলিমেন্টটি response এ সেট করা আছে, ফলে ভ্যারিয়েবলগুলো রেসপন্সের JSON পেলোড থেকে এক্সট্র্যাক্ট করা হচ্ছে।

    <Source>response</Source>

  4. (ধাপ #৩ থেকে নির্ধারিত) উপযুক্ত JSON পেলোডটি পরীক্ষা করুন এবং যাচাই করুন যে এতে <JSONPath> এলিমেন্টে নির্দিষ্ট করা অবজেক্টটি আছে কিনা। যদি JSON পেলোডটিতে সেই অবজেক্টটি না থাকে, তাহলে সেটিই ত্রুটির কারণ।

    উদাহরণস্বরূপ, ধরে নিন আপনি নিম্নলিখিত JSON রেসপন্স পেলোড থেকে ভেরিয়েবল বের করার চেষ্টা করছেন:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    যেহেতু JSON রেসপন্স পেলোডে Name অবজেক্টটি নেই, তাই Extract Variables পলিসিটি ব্যর্থ হয় এবং আপনি steps.extractvariables.InvalidJSONPath এই এরর কোডটি পান।

সমাধান

  1. নিশ্চিত করুন যে, এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <JSONPath> এলিমেন্টে শুধুমাত্র সেই অবজেক্টগুলোই নির্দিষ্ট করা হয়েছে, যেগুলো JSON পেলোডের অংশ এবং যেখান থেকে ভ্যারিয়েবলগুলো এক্সট্র্যাক্ট করা হচ্ছে।

    উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি সংশোধন করতে, আপনি <JSONPath> এলিমেন্টটি পরিবর্তন করে স্যাম্পল JSON রেসপন্স পেলোডে উপলব্ধ অবজেক্টগুলোর মধ্যে একটি নির্দিষ্ট করতে পারেন (উদাহরণস্বরূপ, firstName এবং lastName অবজেক্টগুলো বৈধ):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.firstName</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
    

এক্সিকিউশন ব্যর্থ হয়েছে

ত্রুটি কোড

steps.extractvariables.ExecutionFailed

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

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

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

কারণ বর্ণনা
অনুপস্থিত ইনপুট পেলোড ইনপুট পেলোড (JSON, XML) খালি।
অবৈধ বা ত্রুটিপূর্ণ ইনপুট পলিসিতে পাঠানো ইনপুট (JSON, XML, ইত্যাদি) অবৈধ বা ত্রুটিপূর্ণ।

কারণ: ইনপুট পেলোড অনুপস্থিত

যদি 'Extract Variables' পলিসিটির কোনো JSON বা XML পেলোড থেকে ভেরিয়েবলগুলো এক্সট্র্যাক্ট করার কথা থাকে, কিন্তু <Source> এলিমেন্টে নির্দিষ্ট করা ভেরিয়েবলের কন্টেন্ট (পেলোড) খালি থাকে, তাহলে এই এররটি ঘটে।

উদাহরণস্বরূপ, যদি এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <Source> এলিমেন্টটি request বা response হিসেবে সেট করা থাকে এবং সেগুলোতে JSON বা XML পেলোড থাকার কথা থাকে, কিন্তু পেলোডটি খালি থাকে, তাহলে ত্রুটিটি ঘটে।

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটিটি ঘটেছে, সেটি শনাক্ত করুন। আপনি এই তথ্যটি এরর রেসপন্সের ফল্টস্ট্রিং (faultstring) এলিমেন্টে খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, পলিসির নাম হলো ExtractJSONVariables ):

    "faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"

  2. ব্যর্থ হওয়া Extract Variables XML-এর <Source> এলিমেন্টটি পরীক্ষা করুন এবং নির্ধারণ করুন কোন ধরনের ইনপুট থেকে ভ্যারিয়েবলগুলো এক্সট্র্যাক্ট করা হচ্ছে। উদাহরণস্বরূপ, নিম্নলিখিত Extract Variables পলিসিতে <Source> এলিমেন্টটি response হিসেবে সেট করা আছে এবং এটি XML পেলোড থেকে ভ্যারিয়েবলগুলো এক্সট্র্যাক্ট করছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true">
        <XMLPayload>
            <Namespaces/>
            <Variable name="City" type="string">
                <XPath>/city</XPath>
            </Variable>
        </XMLPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি দ্বারা পার্স করা ইনপুটটি খালি কিনা তা পরীক্ষা করুন। যদি ইনপুটটি খালি থাকে, তাহলে সেটাই ত্রুটির কারণ।

    উপরে দেখানো এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির উদাহরণে, ব্যাকএন্ড সার্ভার থেকে পাঠানো রেসপন্স পেলোড (অর্থাৎ, রেসপন্স বডি) খালি ছিল।

    যেহেতু XML রেসপন্স পেলোডটি খালি, তাই আপনি এই এরর কোডটি পাবেন:

    steps.extractvariables.ExecutionFailed

    এই ত্রুটিটি তখনো ঘটতে পারে যখন <Source> এলিমেন্টটি request হিসেবে সেট করা থাকে, কিন্তু এপিআই প্রক্সি অনুরোধে কোনো পেলোড পাঠানো হয় না। উদাহরণস্বরূপ:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি শুধুমাত্র তখনই এক্সএমএল এক্সট্র্যাকশন করে, যখন মেসেজের Content-Type হেডারটি application/xml , text/xml অথবা application/*+xml হয়। আপনি যদি চান যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি একটি এক্সএমএল রিকোয়েস্ট পেলোড পার্স করুক, তাহলে আপনাকে অবশ্যই কন্টেন্ট-টাইপ হেডারটি application/xml , text/xml অথবা application/*+xml হিসেবে পাস করতে হবে।

সমাধান

নিশ্চিত করুন যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে প্রদত্ত ইনপুটটি বৈধ এবং খালি নয়।

উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির সমস্যাটি সমাধান করতে, একটি বৈধ XML পেলোড পাস করুন। উদাহরণস্বরূপ:

  1. city.xml নামে একটি ফাইল তৈরি করুন এবং তাতে নিম্নলিখিত বিষয়বস্তু অন্তর্ভুক্ত করুন:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. নিম্নলিখিতভাবে একটি cURL কমান্ড ব্যবহার করে API কলটি করুন:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

কারণ: অবৈধ বা ত্রুটিপূর্ণ ইনপুট

যদি এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি কোনো অবৈধ বা ত্রুটিপূর্ণ ইনপুট পার্স করে, তাহলে আপনি এই এররটি পাবেন।

উদাহরণস্বরূপ, যদি এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ইনপুট হিসেবে নিম্নলিখিত অবৈধ JSON প্রদান করা হয়, তাহলে আপনি এই ত্রুটিটি পাবেন।

[
    "args": ["name" : "amar" ]
]

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটিটি ঘটেছে, সেটি শনাক্ত করুন। আপনি এই তথ্যটি এরর রেসপন্সের faultstring ) এলিমেন্টে খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring এ, পলিসির নাম হলো ExtractJSONVariables ):

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. ব্যর্থ হওয়া Extract Variables XML-এর <Source> এলিমেন্টটি পরীক্ষা করুন এবং নির্ধারণ করুন কোন ধরনের ইনপুট থেকে ভ্যারিয়েবলগুলো এক্সট্র্যাক্ট করা হচ্ছে। উদাহরণস্বরূপ, নিম্নলিখিত Extract Variables পলিসিতে <Source> এলিমেন্টটি request হিসেবে সেট করা আছে এবং এটি JSON পেলোড থেকে ভ্যারিয়েবলগুলো এক্সট্র্যাক্ট করছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
    </ExtractVariables>
    
    
  3. এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি দ্বারা পার্স করা ইনপুটটি বৈধ কিনা তা পরীক্ষা করুন। যদি ইনপুটটি অবৈধ বা ত্রুটিপূর্ণ হয়, তাহলে সেটিই ত্রুটির কারণ।

    উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে, নিম্নলিখিত অবৈধ JSON পাস করা হয়েছিল।

    [
        "args": ["name" : "amar" ]
    ]
    

    অনুরোধটি কীভাবে পাঠানো হয়েছিল, তা দেখানোর জন্য এখানে একটি নমুনা এপিআই কল দেওয়া হলো:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    এপিআই-তে পাঠানো JSON পেলোডটি অবৈধ, কারণ এতে বর্গাকার বন্ধনী ( [ ] ) সহ একটি অ্যারে রয়েছে, তাই আপনি এই ত্রুটি কোডটি পাচ্ছেন:

    steps.extractvariables.ExecutionFailed
    

    এই ত্রুটিটি তখনো ঘটতে পারে যখন <Source> এলিমেন্টটিকে response হিসেবে সেট করা হয় কিন্তু JSON রেসপন্স পেলোডটি অবৈধ বা ত্রুটিপূর্ণ হয়।

সমাধান

নিশ্চিত করুন যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে প্রদত্ত ইনপুটটি বৈধ এবং ত্রুটিমুক্ত।

উপরে আলোচিত উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির সমস্যাটি সমাধান করতে, নিম্নরূপে একটি বৈধ JSON পেলোড রিকোয়েস্ট পাঠান:

{
   "args":{
      "name":"amar"
   }
}

কাস্ট করতে অক্ষম

ত্রুটি কোড

steps.extractvariables.UnableToCast

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি 'এক্সট্র্যাক্ট ভ্যারিয়েবলস' পলিসি নিষ্কাশিত মানটিকে কোনো ভ্যারিয়েবলে কাস্ট করতে না পারে। সাধারণত এটি তখন ঘটে যখন আপনি এক ডেটা টাইপের মানকে অন্য ডেটা টাইপের কোনো ভ্যারিয়েবলে সেট করার চেষ্টা করেন।

উদাহরণস্বরূপ, যদি এক্সট্র্যাক্ট ভ্যারিয়েবল পলিসি কোনো স্ট্রিং ভ্যারিয়েবল থেকে নেওয়া মানকে একটি ইন্টিজার ভ্যারিয়েবলে সেট করার চেষ্টা করে, তাহলে আপনি এই ত্রুটিটি দেখতে পাবেন।

রোগ নির্ণয়

  1. যে ভেরিয়েবলটিতে 'এক্সট্র্যাক্ট ভেরিয়েবলস' পলিসি কাস্ট করার চেষ্টা করে ব্যর্থ হয়, তার ডেটা টাইপ শনাক্ত করুন। আপনি এই তথ্যটি এরর রেসপন্সের faultstring ' এলিমেন্টে খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring এ অবজেক্ট টাইপটি হলো BOOLEAN ):

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. সেই এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি শনাক্ত করুন যেখানে আপনি ধাপ #১-এ নির্ধারিত টাইপের একটি ভ্যারিয়েবলের মান সেট করার চেষ্টা করছেন।

    উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি একটি JSONPath $.latitude থেকে মানটিকে boolean টাইপের একটি ভ্যারিয়েবলে এক্সট্র্যাক্ট করে, যা ফল্ট স্ট্রিং-এ যা আছে তার সাথে মিলে যায়:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
          <Variable name="latitude" type="boolean">
              <JSONPath>$.latitude</JSONPath>
          </Variable>
        </JSONPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. যে মানটি নিষ্কাশন করা হচ্ছে তার ডেটা টাইপ পরীক্ষা করুন। ডেটা হেডার, URI পাথ, JSON/XML পেলোড, ফর্ম প্যারামিটার এবং কোয়েরি প্যারামিটার আকারে থাকতে পারে।

  4. ধাপ #৩-এ নির্ধারিত ডেটা টাইপ এবং যে ভেরিয়েবলে ডেটা অ্যাসাইন করা হচ্ছে তার ডেটা টাইপ (যা ধাপ #২-এ নির্ধারিত) একই কিনা তা যাচাই করুন।

  5. যদি উৎস এবং গন্তব্য ভেরিয়েবলের ডেটা টাইপ একই না হয়, তাহলে সেটাই ত্রুটির কারণ।

    উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে, ধরে নিন JSON রিকোয়েস্ট পেলোডটি নিম্নরূপ:

    {
     "latitude":36.2312
    }
    

    <JSONPath> থেকে নিষ্কাশিত '$.latitude' মানটির ডেটা টাইপ হলো Integer, যাকে boolean ডেটা টাইপের একটি ভেরিয়েবলে অ্যাসাইন করা হচ্ছে।

    যেহেতু নিষ্কাশিত মানের ডেটা টাইপ এবং যে ভেরিয়েবলে মানটি বরাদ্দ করা হচ্ছে তার ডেটা টাইপ একই নয়, তাই আপনি steps.extractvariables.UnableToCast ত্রুটি কোডটি পান।

সমাধান

নিশ্চিত করুন যে নিষ্কাশিত মান এবং যে ভেরিয়েবলে বিষয়বস্তু বরাদ্দ করা হচ্ছে, উভয়ের ডেটা টাইপ একই।

উদাহরণস্বরূপ এক্সট্র্যাক্ট ভেরিয়েবল পলিসিটি সংশোধন করতে, আপনাকে ভেরিয়েবলের টাইপ পরিবর্তন করে ইন্টিজার করতে হবে:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="latitude" type="integer">
            <JSONPath>$.latitude</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response</Source>
</ExtractVariables>

JsonPathParsingFailure

ত্রুটি কোড

steps.extractvariables.JsonPathParsingFailure

ত্রুটিপূর্ণ প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যখন 'Extract Variables' পলিসি একটি JSON পাথ পার্স করতে এবং <Source> এলিমেন্টে নির্দিষ্ট করা ফ্লো ভেরিয়েবল থেকে ডেটা এক্সট্র্যাক্ট করতে অক্ষম হয়। সাধারণত এটি ঘটে যদি <Source> এলিমেন্টে নির্দিষ্ট করা ফ্লো ভেরিয়েবলটি বর্তমান ফ্লো-তে বিদ্যমান না থাকে।

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি রেসপন্স ফ্লো-তে 'Extract Variables' পলিসিটি এক্সিকিউট হয় এবং এটি একটি JSON পাথ পার্স করার প্রত্যাশা করে, কিন্তু <Source> এলিমেন্টটি ` request.content নামক ফ্লো ভ্যারিয়েবল নির্দিষ্ট করে, যা রেসপন্স ফ্লো-তে বিদ্যমান নেই।

রোগ নির্ণয়

  1. যে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিতে ত্রুটি ঘটেছে তা শনাক্ত করুন এবং সেই ফ্লো ভ্যারিয়েবলের নাম খুঁজে বের করুন যেখান থেকে ডেটা এক্সট্র্যাক্ট করা যায়নি। আপনি এই দুটি আইটেমই এরর রেসপন্সের ফল্টস্ট্রিং এলিমেন্টে খুঁজে পাবেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, পলিসির নাম হলো ExtractVariables-1 এবং ভ্যারিয়েবলটি হলো request.content :

    "faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"

  2. ব্যর্থ হওয়া এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসি XML-এ, <Source> এলিমেন্টে সেট করা ভ্যারিয়েবলের নামটি ফল্ট স্ট্রিং-এ (উপরের ধাপ #১) চিহ্নিত ভ্যারিয়েবলের নামের সাথে মেলে কিনা তা যাচাই করুন। উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি request.content নামের একটি ভ্যারিয়েবল নির্দিষ্ট করে, যা ফল্টস্ট্রিং-এ যা আছে তার সাথে মিলে যায়:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request.content</Source>
    </ExtractVariables>
    
    
  3. <Source> এলিমেন্টে ব্যবহৃত ফ্লো ভেরিয়েবলটি, যে ফ্লো-তে Extract Variables পলিসিটি কার্যকর করা হচ্ছে, সেখানে সংজ্ঞায়িত এবং উপলব্ধ আছে কিনা তা যাচাই করুন।

  4. যদি ভেরিয়েবলটি হয়:

    • আওতার বাইরে (যে নির্দিষ্ট কার্যপ্রবাহে নীতিমালাটি কার্যকর করা হচ্ছে সেখানে উপলব্ধ নয়) অথবা
    • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত নয়)

    তাহলে এটাই ত্রুটির কারণ।

    উদাহরণস্বরূপ, ধরা যাক উপরে দেখানো ExtractVariables পলিসিটি রেসপন্স ফ্লো-তে এক্সিকিউট হওয়ার কথা। মনে রাখবেন যে ফ্লো ভেরিয়েবলটি হলো request.content এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <Source> এলিমেন্টে এটি ব্যবহৃত হয়। request.content ফ্লো ভ্যারিয়েবলটি শুধুমাত্র রিকোয়েস্ট ফ্লো-তেই পাওয়া যায়।

    যেহেতু রিকোয়েস্ট ফ্লোতে response ভ্যারিয়েবলটি বিদ্যমান নেই, তাই আপনি steps.extractvariables.JsonPathParsingFailure এরর কোডটি পাচ্ছেন।

সমাধান

নিশ্চিত করুন যে, এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসির <Source> এলিমেন্টে ব্যবহৃত ফ্লো ভ্যারিয়েবলটি সেই ফ্লো-তে উপলব্ধ থাকে, যেখানে এক্সট্র্যাক্ট ভ্যারিয়েবলস পলিসিটি কার্যকর হয়।

উদাহরণস্বরূপ, ধরে নিন যে রেসপন্স ফ্লোতে response.content নামে একটি ভেরিয়েবল আছে এবং প্রকৃতপক্ষে এতে সেই JSON রয়েছে যা আপনি এক্সট্র্যাক্ট করতে চান। উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবলস পলিসিটি সংশোধন করতে, আপনি <Source> এলিমেন্টটি নিম্নরূপে পরিবর্তন করতে পারেন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="Name" type="string">
            <JSONPath>$.args.name</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response.content</Source>
</ExtractVariables>