বার্তা নীতি স্থাপনার ত্রুটি সমস্যা সমাধান বরাদ্দ করুন৷

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

অবৈধ সূচক

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

Edge UI অথবা Edge ম্যানেজমেন্ট API-এর মাধ্যমে API প্রক্সি স্থাপন করতে গেলে এই ত্রুটি বার্তাটি দেখা দেয়:

Error in deployment for environment [environment]
The revision is deployed, but traffic cannot flow.
AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]

ত্রুটির বার্তার উদাহরণ

Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0

উদাহরণ স্ক্রিনশট

কারণ

যদি অ্যাসাইন মেসেজ পলিসির <Copy> এবং/অথবা <Remove> এলিমেন্টে নির্দিষ্ট করা ইনডেক্স ০ বা কোনো ঋণাত্মক সংখ্যা হয়, তাহলে এপিআই প্রক্সির ডেপ্লয়মেন্ট ব্যর্থ হয়।

উদাহরণস্বরূপ, যদি আপনি একই নামের একাধিক কোয়েরি প্যারামিটার পাস করেন, তাহলে আপনি Edge-এ সেগুলোকে ইনডেক্সড ফ্লো ভেরিয়েবল হিসেবে অ্যাক্সেস করতে পারবেন। ধরা যাক, আপনি ৩ জন ছাত্রের আইডি কোয়েরি প্যারামিটার হিসেবে পাস করতে চান, তাহলে আপনি তা নিম্নোক্তভাবে করতে পারেন:

https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3

তাহলে, ধরা যাক আপনি 'Assign Message' পলিসিতে ০, ১, এবং ২ ইনডেক্স নম্বরযুক্ত এই কোয়েরি প্যারামিটারগুলো নিম্নোক্তভাবে অ্যাক্সেস করার চেষ্টা করছেন:

id.0
id.1 and
id.2

এক্ষেত্রে, প্রক্সির ডেপ্লয়মেন্ট ব্যর্থ হয়, কারণ ইনডেক্সটি অবশ্যই ১ দিয়ে শুরু হতে হবে। এর মানে হলো, আপনি প্রথম কোয়েরি প্যারামিটার "id=1"-কে "id.1" হিসেবে অ্যাক্সেস করতে পারবেন। দ্বিতীয় কোয়েরি প্যারামিটার "id=2"-কে অ্যাক্সেস করার জন্য, আপনাকে ইনডেক্স ২ অর্থাৎ "id.2" ব্যবহার করতে হবে। একইভাবে, তৃতীয় কোয়েরি প্যারামিটার "id=3"-কে অ্যাক্সেস করার জন্য, আপনি "id.3" ব্যবহার করতে পারেন।

আপনি এখানে আরও তথ্য পেতে পারেন।

রোগ নির্ণয়

  1. যে অ্যাসাইন মেসেজ পলিসিতে ত্রুটিটি ঘটেছে, অ্যাট্রিবিউটের নাম এবং অবৈধ ইনডেক্সটি শনাক্ত করুন। আপনি এই সমস্ত বিষয় ত্রুটির বার্তাতেই খুঁজে পাবেন। উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটিতে, পলিসির নাম হলো GeneratingGeocodingRequest , অ্যাট্রিবিউটের নাম হলো id , এবং ইনডেক্স হলো 0 :

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    
  2. যাচাই করুন যে ব্যর্থ হওয়া 'অ্যাসাইন মেসেজ' পলিসি XML-এ ব্যবহৃত অ্যাট্রিবিউটের নাম এবং ইনডেক্স, এরর মেসেজে (উপরের ধাপ #১) উল্লেখিত অ্যাট্রিবিউটের নাম এবং ইনডেক্সের সাথে মেলে কিনা। উদাহরণস্বরূপ, নিম্নলিখিত পলিসিতে অ্যাট্রিবিউট id এবং index হিসেবে 0 নির্দিষ্ট করা আছে, যা এরর মেসেজের সাথে মিলে যায়:

    <AssignMessage name="GenerateStudentsRequest">
      <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
      <Copy source="request">
          <QueryParams>
              <QueryParam name="school_name"/>
              <QueryParam name="id.0"/>
              <QueryParam name="id.1"/>
              <QueryParam name="id.2"/>
          </QueryParams>
      </Copy>
    </AssignMessage>
  3. যদি নির্দিষ্ট সূচকটি ০ বা ঋণাত্মক সংখ্যা হয়, তাহলে সেটাই ত্রুটির কারণ।

    উপরে দেখানো উদাহরণ 'অ্যাসাইন মেসেজ' পলিসিতে, আপনি ইনডেক্স 0 ব্যবহার করে কোয়েরি প্যারামিটার 'id'-এর প্রথম মানটি অ্যাক্সেস করার চেষ্টা করছেন। ফলে, এপিআই প্রক্সির ডেপ্লয়মেন্টটি এই ত্রুটির সাথে ব্যর্থ হয়:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    

সমাধান

অ্যাসাইন মেসেজ (Assign Message)-এ, যখন আপনি একই নামের একাধিক হেডার, কোয়েরি প্যারামিটার বা অন্যান্য প্যারামিটার অ্যাক্সেস করেন, তখন নিশ্চিত করুন যে ইনডেক্সটি সর্বদা শূন্যের চেয়ে বড়। উদাহরণস্বরূপ:

<AssignMessage name="GenerateStudentsRequest">
    <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
    <Copy source="request">
        <QueryParams>
            <QueryParam name="school_name"/>
            <QueryParam name="id.1"/>
            <QueryParam name="id.2"/>
            <QueryParam name="id.3"/>
        </QueryParams>
    </Copy>
</AssignMessage>

অবৈধ ভেরিয়েবলের নাম

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

Edge UI অথবা Edge ম্যানেজমেন্ট API-এর মাধ্যমে API প্রক্সি স্থাপন করতে গেলে এই ত্রুটি বার্তাটি দেখা দেয়:

Error Saving Revision [revision_number]
The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.

ত্রুটির বার্তার উদাহরণ

Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.

উদাহরণ স্ক্রিনশট

কারণ

যদি <Name> চাইল্ড এলিমেন্টটি খালি থাকে অথবা <AssignVariable> এলিমেন্টে তা নির্দিষ্ট করা না থাকে, তাহলে এপিআই প্রক্সির ডেপ্লয়মেন্ট ব্যর্থ হয়, কারণ মান নির্ধারণ করার জন্য কোনো বৈধ ভেরিয়েবলের নাম থাকে না। একটি বৈধ ভেরিয়েবলের নাম আবশ্যক।

রোগ নির্ণয়

যে নির্দিষ্ট এপিআই প্রক্সিতে ব্যর্থতাটি ঘটেছে, সেখানকার সমস্ত 'অ্যাসাইন মেসেজ' পলিসি পরীক্ষা করুন। যদি এমন কোনো 'অ্যাসাইন মেসেজ' পলিসি থাকে যেখানে <Name> চাইল্ড এলিমেন্টটি খালি অথবা <AssignVariable> এলিমেন্টে তা নির্দিষ্ট করা নেই, তাহলে সেটিই এই ত্রুটির কারণ।

উদাহরণ ১: নিম্নলিখিত অ্যাসাইন মেসেজ পলিসিতে কোনো <Name> এলিমেন্ট সংজ্ঞায়িত নেই।

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message-1</DisplayName>
    <Properties/>
    <AssignVariable>
        <Value>abcd1234</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>

উদাহরণ ২: নিম্নলিখিত অ্যাসাইন মেসেজ পলিসিটিতে একটি খালি <Name> এলিমেন্ট রয়েছে।

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message-1</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name></Name>
        <Value>abcd1234</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>

সমাধান

নিশ্চিত করুন যে, অ্যাসাইন মেসেজ পলিসির <AssignVariable> এলিমেন্টের মধ্যে <Name> চাইল্ড এলিমেন্টটি সর্বদা নির্দিষ্ট এবং খালি নয়। উদাহরণস্বরূপ:

<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message-1</DisplayName>
    <Properties/>
        <AssignVariable>
        <Name>appSecret</Name>
        <Value>abcd1234</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>