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

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

অবৈধ বার্তা ওজন

ত্রুটি কোড

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.5 (একটি অ-পূর্ণসংখ্যা) হয়, তাহলে এই ত্রুটিটি ঘটবে।

রোগ নির্ণয়

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

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

    উদাহরণস্বরূপ, নিম্নলিখিত পলিসিটি message_weight একটি ফ্লো ভ্যারিয়েবলের মাধ্যমে ` <MessageWeight> নির্দিষ্ট করে:

    <?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 Proxy বান্ডেলের মধ্যে সেই কোডটি খুঁজুন যেখানে ভেরিয়েবলটি প্রথম সংজ্ঞায়িত করা হয়েছিল।
    2. প্রথমে যে পলিসিতে ভেরিয়েবলটি সংজ্ঞায়িত ও পূরণ করা হয়েছে, তা জেনে নেওয়ার পর, ভেরিয়েবলটির মান কীভাবে সেট করা হয়েছে তা পরীক্ষা করুন।
    3. যদি ফ্লো ভেরিয়েবলের মান উপরের ধাপ #১-এ চিহ্নিত মানের সাথে মিলে যায়, তাহলে সেটাই ত্রুটির কারণ।

    উদাহরণস্বরূপ, ধরে নিন যে কোটা পলিসির আগে ব্যবহৃত একটি জাভাস্ক্রিপ্ট পলিসি, অনুরোধের ধরনের উপর ভিত্তি করে 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. এপিআই প্রক্সিতে যেখানে ব্যর্থতা ঘটেছে, সেখানকার প্রতিটি কোটা পলিসি পরীক্ষা করুন। যদি এমন কোনো কোটা পলিসি থাকে যেখানে বাধ্যতামূলক উপাদান <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
    

সমাধান

নিশ্চিত করুন যে একটি নির্দিষ্ট এপিআই প্রক্সির জন্য সমস্ত কোটা পলিসিতে বাধ্যতামূলক উপাদান <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. এপিআই প্রক্সিতে যেখানে ব্যর্থতা ঘটেছে, সেখানকার প্রতিটি কোটা পলিসি পরীক্ষা করুন। যদি এমন কোনো কোটা পলিসি থাকে যেখানে বাধ্যতামূলক উপাদান <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
    

সমাধান

নিশ্চিত করুন যে একটি নির্দিষ্ট এপিআই প্রক্সির জন্য সমস্ত কোটা পলিসিতে <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>