কোটা রানটাইম সমস্যা সমাধান করা

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

InvalidMessageWeight

সমস্যার কোড

policies.ratelimit.InvalidMessageWeight

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

{
    "fault": {
        "faultstring": "Invalid message weight value [invalid_value]",
        "detail": {
            "errorcode": "policies.ratelimit.InvalidMessageWeight"
        }
    }
}

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

{
    "fault": {
        "faultstring": "Invalid message weight value 1.5",
        "detail": {
            "errorcode": "policies.ratelimit.InvalidMessageWeight"
        }
    }
}

কারণ

ফ্লো ভেরিয়েবলের মাধ্যমে নির্দিষ্ট করা <MessageWeight> এলিমেন্টের মান ভুল হলে (পূর্ণসংখ্যা নয় এমন মান) এই সমস্যা হয়।

যেমন, <MessageWeight> এলিমেন্টের জন্য নির্দিষ্ট ফ্লো ভেরিয়েবলের ভ্যালু ১.৫ (পূর্ণসংখ্যা নয় এমন ভ্যালু) হলে এই সমস্যাটি হবে।

ডায়াগনসিস

  1. কোটা নীতিতে <MessageWeight> এলিমেন্টের জন্য ব্যবহৃত ভুল মান শনাক্ত করুন। আপনি সমস্যার উত্তরের faultstring এলিমেন্টে এই তথ্য খুঁজে পাবেন। যেমন, নিম্নলিখিত সমস্যার ক্ষেত্রে, <MessageWeight> এলিমেন্টের জন্য ব্যবহৃত ভুল ভ্যালু হল 1.5:

    "faultstring": "Invalid message weight value 1.5"
    
  2. যেখানে সমস্যা হয়েছে সেই নির্দিষ্ট API প্রক্সিতে কোটা সংক্রান্ত সব নীতি পরীক্ষা করে দেখুন। এক বা একাধিক কোটা নীতি থাকতে পারে যেখানে <MessageWeight> এলিমেন্ট নির্দিষ্ট করা আছে।

    যেমন, নিম্নলিখিত নীতি <MessageWeight>ফ্লো ভেরিয়েবলের মাধ্যমেmessage_weight নির্দিষ্ট করে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Quota async="false" continueOnError="false" enabled="true" name="Quota_with_weight" type="calendar">
        <DisplayName>Quota_with_weight</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
        <MessageWeight ref="message_weight"/>
    </Quota>
    
  3. শনাক্ত করা কোটা নীতিতে <MessageWeight> -এর জন্য ব্যবহৃত ভেরিয়েবলের মান নির্ধারণ করুন। ফ্লো ভেরিয়েবলের ভ্যালু HTTP হেডার, কোয়েরি প্যারামিটার, XML বা JSON অনুরোধ পেলোড থেকে এক্সট্র্যাক্ট করা যেতে পারে অথবা অন্য কোনও নীতিতে তা সংজ্ঞায়িত করা যেতে পারে:

    1. API প্রক্সি বান্ডেলের মধ্যে সেই কোডটি খুঁজে বের করুন যেখানে ভেরিয়েবলটি প্রথম সংজ্ঞায়িত করা হয়েছে।
    2. যে নীতিতে ভেরিয়েবলটি প্রথম সংজ্ঞায়িত ও পপুলেট করা হয়েছে সেটি খুঁজে বের করার পরে, ভেরিয়েবলের ভ্যালু কীভাবে সেট করা হয়েছে তা চেক করুন।
    3. ফ্লো ভেরিয়েবলের মান যদি উপরে #১ ধাপে শনাক্ত করা মানের সাথে মিলে যায়, তাহলে সেটিই হল সমস্যার কারণ।

    যেমন, ধরে নিন যে কোটা নীতির আগে ব্যবহৃত একটি JavaScript নীতি, নিচে দেখানো অনুরোধের ধরনের উপর ভিত্তি করে message_weight ভেরিয়েবল সেট করে:

    var verb = context.getVariable("request.verb");
    context.setVariable("message_weight", "1.5");
    if (verb == 'POST') {
      context.setVariable("message_weight", "2");
    }
    

    লক্ষ্য করুন যে ভেরিয়েবল message_weight-এর ভ্যালু হল 1.5 যা একটি ভুল (পূর্ণসংখ্যা নয়) ভ্যালু।

রেজোলিউশন

ফ্লো ভেরিয়েবল দ্বারা নির্দিষ্ট করা MessageWeight-এর মানটি সঠিক মান (পূর্ণসংখ্যা) কিনা তা নিশ্চিত করুন।

উপরে দেখানো উদাহরণটি ঠিক করতে, আপনি জাভাস্ক্রিপ্টে message_weight ভেরিয়েবলের মান পরিবর্তন করে পূর্ণসংখ্যা করতে পারেন।

var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
  context.setVariable("message_weight", "2");
}

FailedToResolveQuotaIntervalReference

সমস্যার কোড

policies.ratelimit.FailedToResolveQuotaIntervalReference

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

{
    "fault": {
        "faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
        "detail": {
            "errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
        }
    }
}

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

{
    "fault": {
        "faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
        "detail": {
            "errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
        }
    }
}

কারণ

কোটা নীতিতে <Interval>এলিমেন্টটি সংজ্ঞায়িত করা না থাকলে এই সমস্যাটি হয়। এই এলিমেন্টটি বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের ব্যবধান নির্দিষ্ট করতে এটি ব্যবহার করা হয়। <TimeUnit> এলিমেন্টের মাধ্যমে সংজ্ঞায়িত করা সময় বিরতি মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস হতে পারে।

ডায়াগনসিস

  1. API প্রক্সিতে কোটা সংক্রান্ত প্রতিটি নীতি পরীক্ষা করুন যেখানে সমস্যা হয়েছে। কোটা সংক্রান্ত কোনও নীতিতে বাধ্যতামূলক এলিমেন্ট <Interval> নির্দিষ্ট করা না থাকলে, সেটিই সমস্যার কারণ।

    যেমন, নিম্নলিখিত কোটা নীতিতে বাধ্যতামূলক এলিমেন্ট <Interval> নেই:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
        <DisplayName>CheckQuota</DisplayName>
        <Properties/>
        <Allow count="3"/>
            <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
    </Quota>
    

    কারণ, উপরে উল্লেখ করা কোটা নীতিতে বাধ্যতামূলক এলিমেন্ট <TimeUnit> সংজ্ঞায়িত করা নেই, তাই আপনি এই সমস্যার কোড পাবেন:

    policies.ratelimit.FailedToResolveQuotaIntervalReference
    

রেজোলিউশন

কোনও API প্রক্সির জন্য কোটা সংক্রান্ত সব নীতিতে <Interval> বাধ্যতামূলক এলিমেন্ট সঠিকভাবে সংজ্ঞায়িত করা আছে কিনা তা নিশ্চিত করুন।

উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি নিচে দেখানো <Interval> এলিমেন্টটি যোগ করে নীতি পরিবর্তন করতে পারেন।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
    <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
    <StartTime>2017-7-16 12:00:00</StartTime>
</Quota>

FailedToResolveQuotaIntervalTimeUnitReference

সমস্যার কোড

policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference

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

{
    "fault": {
        "faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
        "detail": {
            "errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
        }
    }
}

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

{
    "fault": {
        "faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
        "detail": {
            "errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
        }
    }
}

কারণ

কোটা নীতিতে <TimeUnit>এলিমেন্টটি সংজ্ঞায়িত করা না থাকলে এই সমস্যাটি হয়। এই এলিমেন্টটি বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে এটি ব্যবহার করা হয়। সময়ের ব্যবধান মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস হতে পারে।

ডায়াগনসিস

  1. API প্রক্সিতে কোটা সংক্রান্ত প্রতিটি নীতি পরীক্ষা করুন যেখানে সমস্যা হয়েছে। কোটা সংক্রান্ত কোনও নীতিতে বাধ্যতামূলক এলিমেন্ট <TimeUnit> নির্দিষ্ট করা না থাকলে, সেটিই সমস্যার কারণ।

    যেমন, নিম্নলিখিত কোটা নীতিতে বাধ্যতামূলক এলিমেন্ট <TimeUnit> নেই:

    <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
      <DisplayName>CheckQuota</DisplayName>
      <Properties/>
      <Allow count="3"/>
          <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
      <StartTime>2017-7-16 12:00:00</StartTime>
    </Quota>
    

    কারণ, উপরে উল্লেখ করা কোটা নীতিতে বাধ্যতামূলক এলিমেন্ট <TimeUnit> সংজ্ঞায়িত করা নেই, তাই আপনি এই সমস্যার কোড পাবেন:

    policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
    

রেজোলিউশন

কোনও API প্রক্সির জন্য কোটা সংক্রান্ত সব নীতিতে বাধ্যতামূলক এলিমেন্ট <TimeUnit> নির্দিষ্ট করা আছে কিনা তা নিশ্চিত করুন।

উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি নিচে দেখানো <TimeUnit> এলিমেন্টটি যোগ করে নীতি পরিবর্তন করতে পারেন।

<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
    <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
    <StartTime>2017-7-16 12:00:00</StartTime>
</Quota>