কোটা রিসেট করা সংক্রান্ত রানটাইম সমস্যার সমাধান করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

InvalidRLPolicy

সমস্যার কোড

policies.resetquota.InvalidRLPolicy

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "Invalid rate limit policy quota_policy_name",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

সমস্যার মেসেজের উদাহরণ

{
    "fault": {
        "faultstring": "Invalid rate limit policy MyQuotaPolicy",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

কারণ

<Quota> এলিমেন্টে উল্লেখ করা কোটা নীতি API প্রক্সিতে রিসেট কোটা নীতি সংজ্ঞায়িত করা না থাকলে এই সমস্যাটি ঘটে। <Quota> এলিমেন্টটি বাধ্যতামূলক এবং এটি টার্গেট কোটা নীতিকে শনাক্ত করে যার কাউন্টারটি 'কোটা নীতি রিসেট করুন' নীতির মাধ্যমে আপডেট করা উচিত। এই টার্গেট কোটা নীতি একই API প্রক্সি এর মধ্যে তৈরি ও সংজ্ঞায়িত করতে হবে এবং ফ্লো চলাকালীন উপলভ্য থাকতে হবে।

যেমন, ধরুন<Quota> এলিমেন্টটি নিচে দেখানো হয়েছে, কিন্তু যদি MyQuotaPolicy API প্রক্সিতে নির্দিষ্ট করা না থাকে, তাহলে আপনি উপরে দেখানো সমস্যাটি পাবেন।

<Quota name="MyQuotaPolicy">

ডায়াগনসিস

  1. 'কোটা রিসেট করার নীতি'-তে উল্লেখ করা কোটা নীতির ভুল নাম শনাক্ত করুন। আপনি faultstring থেকে কোটা নীতির নাম খুঁজে পেতে পারেন। যেমন, নিচে উল্লেখ করা ফল্টস্ট্রিংয়ে, কোটা নীতির নাম হল MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. API প্রক্সিতে রিসেট কোটা সংক্রান্ত প্রতিটি নীতি পরীক্ষা করে দেখুন যেখানে ব্যর্থতা ঘটেছে। নির্দিষ্ট রিসেট কোটা নীতি শনাক্ত করুন যেখানে বাধ্যতামূলক এলিমেন্টের <Quota> মধ্যে উল্লেখ করা কোটা নীতি উপরের ধাপ ১-এ শনাক্ত করা নামের সাথে ম্যাচ করে।

    যেমন, নিম্নলিখিত 'কোটা রিসেট করুন' নীতিতে MyQuotaPolicy নামের একটি কোটা নীতি নির্দিষ্ট করা আছে, যা faultstring-এ থাকা তথ্যের সাথে ম্যাচ করে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
           <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    
    
  3. এই কোটা নীতি একই API প্রক্সির মধ্যে তৈরি ও সংজ্ঞায়িত করা হয়েছে কিনা তা নির্ধারণ করুন। একই API প্রক্সির মধ্যে কোটা নীতি না থাকলে, এটিই হল ভুল হওয়ার কারণ।

    উপরে দেখানো উদাহরণে, কোটা নীতি MyQuotaPolicy, রিসেট কোটা নীতি Reset_Quota_Demo প্রয়োগ করার আগে ফ্লোতে থাকার কথা।

    ফ্লোতে কোটা নীতি MyQuotaPolicy না থাকার কারণে, আপনি এই সমস্যার কোডটি পাবেন:

"errorcode": "policies.resetquota.InvalidRLPolicy"

রেজোলিউশন

<Quota> এলিমেন্টে ঘোষিত কোটা নীতি API প্রক্সিতে সংজ্ঞায়িত করা আছে কিনা তা নিশ্চিত করুন। 'কোটা রিসেট করার নীতি' এক্সিকিউট করার সময় এই টার্গেট কোটা নীতি উপলভ্য থাকতে হবে।

FailedToResolveAllowCountRef

সমস্যার কোড

policies.resetquota.FailedToResolveAllowCountRef

সমস্যার উত্তরের বডি

Failed to resolve allow count reference reference_name for identifier identifier_name
in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision:
revision_number;Environment:env_name;Organization:org_name

সমস্যার মেসেজের উদাহরণ

Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo

ক্লায়েন্টকে যে সমস্যাটি দেখানো হবে সেটি হল: policies.ratelimit.QuotaViolation.

কারণ

নীতিতে <Allow> এলিমেন্টের মধ্যে অনুমতিপ্রাপ্ত সংখ্যার ভেরিয়েবেল রেফারেন্সের কোনও মান না থাকলে এই সমস্যা হয়। এই এলিমেন্টটি বাধ্যতামূলক এবং কোটা কাউন্টার থেকে কত পরিমাণ কমাতে হবে তা নির্দিষ্ট করে।

ডায়াগনসিস

  1. যেখানে সমস্যা হয়েছে সেই 'কোটা রিসেট' নীতি এবং সমাধান করা যাচ্ছে না এমন রেফারেন্স ভেরিয়েবলের নাম চিহ্নিত করুন। আপনি সমস্যার উত্তরে এই দুটি আইটেমই দেখতে পাবেন।

    যেমন, নিচে দেওয়া faultstring-এ, নীতির নাম হল ResetQuota এবং রেফারেন্স হল request.header.allowcount:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    
  2. কোটা রিসেট করার নীতি সংক্রান্ত XML কাজ না করলে, যাচাই করে দেখুন যে ব্যবহৃত রেফারেন্স ভেরিয়েবলের নাম, সমস্যার উত্তরে (উপরে ১ নম্বর ধাপে) শনাক্ত করা রেফারেন্স নামের সাথে মিলছে কিনা।

    যেমন, নিম্নলিখিত নীতিটি রেফারেন্স সহ এলিমেন্ট সেট করে যার নাম হল request.header.allowcount, যা সমস্যার সাথে মিলে যায়:

    <ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota">
        <DisplayName>ResetQuota</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
            <Identifier name="identifierName">
                <Allow ref="request.header.allowcount"/>
            </Identifier>
        </Quota>
    </ResetQuota>
    
  3. যে ফ্লোতে রিসেট কোটা নীতি এক্সিকিউট করা হয়, সেখানে রেফারেন্স ভেরিয়েবলটি সংজ্ঞায়িত ও উপলভ্য আছে কিনা তা নির্ধারণ করুন।

  4. ভেরিয়েবলটি যদি এগুলির মধ্যে কোনও একটি হয়:

    1. স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়) অথবা
    2. সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)

    তাহলে এটিই হল সমস্যার কারণ।

    উপরে দেখানো উদাহরণে, <Allow>এলিমেন্টে অনুমোদিত সংখ্যার ভ্যালু allowcount নামের অনুরোধ হেডার থেকে পাওয়ার কথা। তবে, Edge request.header.allowcount সংক্রান্ত সমস্যার সমাধান করতে পারছে না। API অনুরোধের অংশ হিসেবে হেডার allowcount পাস না করা হলে এটি হয়।

    এখানে একটি API অনুরোধের নমুনা দেওয়া হল যা অনুরোধের অংশ হিসেবে allowcount হেডার পাস করে না:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    অনুরোধের অংশ হিসেবে allowcount হেডার পাস করা হয়নি বলে, উপরে উল্লেখ করা Reset Quota নীতিতে এলিমেন্ট <Allow>-এ ব্যবহৃত request.header.allowcount ভেরিয়েবলটি অনির্দিষ্ট এবং সেই কারণে এটি সমাধান করা যাবে না। তাই আপনি এই ভুল সংক্রান্ত উত্তর পাবেন:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    

রেজোলিউশন

<Allow> এলিমেন্টে উল্লেখ করা ভেরিয়েবলটি আছে/সংজ্ঞায়িত করা আছে কিনা এবং নির্দিষ্ট ফ্লোতে উপলভ্য আছে কিনা তা নিশ্চিত করুন, যেখানে কোটা রিসেট করার নীতি কার্যকর হয়।

উপরে দেখানো উদাহরণটি ঠিক করতে, আপনি অনুরোধটি পরিবর্তন করে নিচে দেখানো মতো allowcount হেডার যোগ করতে পারেন:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

FailedToResolveRLPolicy

সমস্যার কোড

policies.resetquota.FailedToResolveRLPolicy

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

সমস্যার মেসেজের উদাহরণ

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

কারণ

<Quota> এলিমেন্টে ref অ্যাট্রিবিউট দ্বারা রেফারেন্স করা ভেরিয়েবল রিজলভ করা না গেলে এই সমস্যা হয়।

যেমন, যদি ref অ্যাট্রিবিউটটি <Quota> এলিমেন্টে request.header.quotapolicy হিসেবে সেট করা থাকে কিন্তু API প্রক্সি ফ্লোতে উপলভ্য না থাকে, তাহলে আপনি উপরের সমস্যাটি পাবেন।

<Quota ref="request.header.quotapolicy">

ডায়াগনসিস

  1. API প্রক্সিতে প্রতিটি রিসেট কোটা নীতি পরীক্ষা করুন যেখানে সমস্যা হয়েছে এবং সেই রিসেট কোটা নীতি শনাক্ত করুন যেখানে <Quota> এলিমেন্টে উল্লেখ করা রেফারেন্স ভেরিয়েবলের নাম সঠিকভাবে সমাধান করা যাচ্ছে না।

  2. ভেরিয়েবলটি যে ফ্লোতে 'কোটা রিসেট' নীতি প্রয়োগ করা হয় সেখানে সেটি সংজ্ঞায়িত ও উপলভ্য আছে কিনা তা নির্ধারণ করুন।

  3. ভেরিয়েবলটি যদি এগুলির মধ্যে কোনও একটি হয়:

    1. স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হয় সেখানে উপলভ্য নয়) অথবা
    2. সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)

    তাহলে এটিই হল সমস্যার কারণ।

    নিচে দেখানো উদাহরণে, টার্গেট কোটা নীতির নাম quotapolicy নামের অনুরোধ হেডার থেকে রিট্রিভ করা হবে। তবে, Edge request.header.quotapolicy সমাধান করতে পারছে না। API অনুরোধের অংশ হিসেবে quotapolicy হেডার পাস করা না হলে এটি ঘটে।

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota ref="request.header.quotapolicy">
            <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    

    এখানে একটি API অনুরোধের নমুনা দেওয়া হল যা অনুরোধের অংশ হিসেবে quotapolicy হেডার পাস করে না:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    অনুরোধের অংশ হিসেবে quotapolicy হেডার পাস করা হয়নি বলে, উপরে দেওয়া কোটা নীতি রিসেট করার request.header.quotapolicy রেফারেন্সটি এলিমেন্ট <Quota>-এ ব্যবহার করা হয়েছে যা সংজ্ঞায়িত করা হয়নি এবং সমাধান করা যাবে না। এর ফলে, আপনি সমস্যার উত্তর পান:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

রেজোলিউশন

<Quota> এলিমেন্টে উল্লেখ করা ref অ্যাট্রিবিউট যেন রানটাইমে সমাধান করা যায় এবং নির্দিষ্ট ফ্লোতে উপলভ্য থাকে, যেখানে 'কোটা রিসেট করুন' নীতি কার্যকর হয়, তা নিশ্চিত করুন।

উপরে দেখানো উদাহরণটি ঠিক করতে, আপনি নিচে দেখানো quotapolicy হেডার অন্তর্ভুক্ত করার জন্য অনুরোধটি পরিবর্তন করতে পারেন:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"