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

আপনি 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.5 (একটি অ-পূর্ণসংখ্যা মান) হয়।

রোগ নির্ণয়

  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. চিহ্নিত কোটা নীতি(ies) এ <MessageWeight> এর জন্য ব্যবহৃত ভেরিয়েবলের মান নির্ধারণ করুন। ফ্লো ভেরিয়েবলের মান HTTP শিরোনাম, ক্যোয়ারী প্যারামিটার, একটি XML বা JSON অনুরোধ পেলোড থেকে বের করা যেতে পারে বা অন্য নীতিতে সংজ্ঞায়িত করা যেতে পারে:

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

    উদাহরণস্বরূপ, অনুমান করুন যে কোটা নীতির আগে ব্যবহৃত একটি জাভাস্ক্রিপ্ট নীতি নিম্নে দেখানো অনুরোধের প্রকারের উপর ভিত্তি করে পরিবর্তনশীল 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");
}

ব্যর্থ হতে সমাধান কোটা ইন্টারভাল রেফারেন্স

ত্রুটি কোড

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>

ব্যর্থ হতে সমাধান কোটা ইন্টারভালটাইমইউনিট রেফারেন্স

ত্রুটি কোড

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>