সাধারণ সমস্যাগুলি সমাধান করুন

কোনো সমস্যা হলে সাহায্যের জন্য নিচের বিভাগগুলো দেখুন।

ফ্লিট ইঞ্জিনে অবস্থা হারিয়ে গেছে

ফ্লিট ইঞ্জিন নিয়ে কাজ করার সময়, সম্ভাব্য ব্যর্থতাগুলো আগে থেকে অনুমান করে আপনার ইমপ্লিমেন্টেশন ডিজাইন করুন। উদাহরণস্বরূপ, আপনি যদি ফ্লিট ইঞ্জিনকে একটি গাড়ি আপডেট করার জন্য অনুরোধ করেন, তবে এটি একটি এরর দিয়ে সাড়া দিতে পারে, যা নির্দেশ করে যে গাড়িটির কোনো অস্তিত্ব নেই। সেক্ষেত্রে আপনার ইমপ্লিমেন্টেশনটির উচিত গাড়িটিকে নতুন অবস্থায় পুনরায় তৈরি করা।

ফ্লিট ইঞ্জিনের মারাত্মক ব্যর্থতার মতো অত্যন্ত অসম্ভাব্য পরিস্থিতিতে, আপনাকে বেশিরভাগ বা সমস্ত যানবাহন এবং টাস্ক পুনরায় তৈরি করতে হতে পারে। যদি তৈরির হার খুব বেশি হয়ে যায়, তাহলে কোটা সংক্রান্ত সমস্যার কারণে কিছু অনুরোধ আবার ব্যর্থ হতে পারে, কারণ ডিনায়াল অফ সার্ভিস (DOS) আক্রমণ এড়ানোর জন্য কোটা যাচাইয়ের ব্যবস্থা রয়েছে। এই ক্ষেত্রে, পুনরায় চেষ্টার জন্য একটি ব্যাকঅফ কৌশল ব্যবহার করে পুনরায় তৈরির হার কমিয়ে দিন।

পুনরায় চেষ্টা

আপনার সিস্টেমে ফ্লিট ইঞ্জিনে পাঠানো অনুরোধের জন্য রিট্রাই (পুনরায় চেষ্টা) ব্যবস্থা আছে কিনা তা নিশ্চিত করুন, কারণ সেগুলি মাঝে মাঝে ব্যর্থ হতে পারে। ফ্লিট ইঞ্জিন ক্লায়েন্ট লাইব্রেরিগুলো ডিফল্টরূপে রিট্রাই করে থাকে।

ড্রাইভার অ্যাপে অবস্থা হারিয়ে গেছে

যদি ড্রাইভার অ্যাপটি ক্র্যাশ করে, তবে অ্যাপটিকে অবশ্যই ড্রাইভার এসডিকে-এর মধ্যে বর্তমান অবস্থা পুনরায় তৈরি করতে হবে। টাস্কগুলো বিদ্যমান আছে কিনা তা নিশ্চিত করতে এবং তাদের বর্তমান অবস্থা পুনরুদ্ধার করতে অ্যাপটির উচিত টাস্কগুলো পুনরায় তৈরি করার চেষ্টা করা। এছাড়াও, অ্যাপটির উচিত ড্রাইভার এসডিকে-এর জন্য স্টপগুলোর তালিকা পুনরায় তৈরি করা এবং স্পষ্টভাবে সেট করা।

দ্রষ্টব্য : এই পুনরুদ্ধারগুলি ফ্লিট ইঞ্জিন থেকে প্রাপ্ত তথ্যের উপর নির্ভর না করে স্বয়ংক্রিয়ভাবে সম্পন্ন করতে হবে, শুধুমাত্র সেই ত্রুটিগুলি ছাড়া যা নির্দেশ করে যে ডেটাবেসে কোনও সত্তা আগে থেকেই বিদ্যমান আছে কিনা। যদি কোনও সত্তা আগে থেকেই বিদ্যমান থাকে, তবে সেই ত্রুটিটি উপেক্ষা করা যেতে পারে এবং তার আইডি ব্যবহার করে সত্তাটি আপডেট করা যেতে পারে।

সময়সীমা অতিক্রম করার ত্রুটি

Fleet Engine কল করার সময় যদি DEADLINE_EXCEEDED এরর আসে, তার মানে হলো অনুরোধটি কনফিগার করা টাইমআউটের চেয়ে বেশি সময় নিয়েছে। Fleet Engine ক্লায়েন্ট লাইব্রেরিগুলোর ডিফল্ট টাইমআউট থাকে, কিন্তু আপনার সেগুলো সমন্বয় করার প্রয়োজন হতে পারে।

gRPC-এর ডেডলাইন সংক্রান্ত সাধারণ তথ্যের জন্য, gRPC এবং ডেডলাইনস দেখুন।

Fleet Engine জাভা ক্লায়েন্ট লাইব্রেরি ব্যবহার করার সময় ডেডলাইন কনফিগার করতে, আপনি RPC রিট্রাই সেটিংস অ্যাডজাস্ট করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে VehicleService সেট আপ করার সময় একটি কাস্টম টাইমআউট কনফিগার করতে হয়:

VehicleServiceSettings.Builder settingsBuilder = VehicleServiceSettings.newBuilder();

// Set the timeout to 10 seconds.
settingsBuilder
    .getVehicleSettings()
    .setRetrySettings(
        settingsBuilder.getVehicleSettings().getRetrySettings().toBuilder()
            .setTotalTimeout(java.time.Duration.ofSeconds(10))
            .build());

VehicleServiceClient client = VehicleServiceClient.create(settingsBuilder.build());

সাধারণ এপিআই ত্রুটি

এই বিভাগে আপনি সম্মুখীন হতে পারেন এমন সাধারণ API ত্রুটি, সেগুলোর কারণ এবং সমাধানের উপায় তালিকাভুক্ত করা হয়েছে।

NOT_FOUND (HTTP 404)

অনুরোধকৃত সত্তাটি (যেমন যানবাহন, ভ্রমণ বা কাজ) খুঁজে পাওয়া যায়নি।

  • কারণ : সাধারণত ডাটাবেসে নেই এমন কোনো আইডি ব্যবহার করে কোনো এনটিটি পেতে, আপডেট করতে বা মুছে ফেলার চেষ্টার কারণে এটি ঘটে থাকে।
  • প্রতিকার : এনটিটি অ্যাক্সেস করার চেষ্টা করার আগে যাচাই করে নিন যে এনটিটি আইডিটি সঠিক এবং এনটিটিটি সফলভাবে তৈরি হয়েছে।

ALREADY_EXISTS (HTTP 409)

আপনি যে সত্তাটি তৈরি করার চেষ্টা করছেন তা ইতিমধ্যেই বিদ্যমান।

  • কারণ : আগে থেকেই ব্যবহৃত কোনো আইডি দিয়ে CreateVehicle বা CreateTrip মতো কোনো create মেথড কল করার ফলে এটি ঘটে।
  • প্রতিকার : হয় বিদ্যমান সত্তাটি আপডেট করুন, অথবা তৈরির অনুরোধের জন্য একটি নতুন অনন্য আইডি ব্যবহার করুন।

PERMISSION_DENIED (HTTP 403)

অনুরোধটি সম্পন্ন করার জন্য আপনার প্রয়োজনীয় অনুমতি নেই।

  • কারণ : এটি সাধারণত ঘটে যদি আপনার JSON ওয়েব টোকেন (JWT)-এ সঠিক ক্লেইমগুলো না থাকে, অথবা যদি JWT-তে স্বাক্ষরকারী সার্ভিস অ্যাকাউন্টের প্রয়োজনীয় IAM রোলগুলো না থাকে। উদাহরণস্বরূপ, "অনুরোধকৃত ট্রিপের জন্য JWT-তে একটি উপযুক্ত স্কোপ নেই।"
  • প্রতিকার : আপনার সার্ভিস অ্যাকাউন্টের অনুমতিগুলো যাচাই করুন এবং নিশ্চিত করুন যে আপনি যে এনটিটিটি অ্যাক্সেস করার চেষ্টা করছেন, তার জন্য আপনার JWT ক্লেইমগুলোতে সঠিক স্কোপ অন্তর্ভুক্ত রয়েছে।

INVALID_ARGUMENT (HTTP 400)

অনুরোধে প্রদত্ত এক বা একাধিক আর্গুমেন্ট অবৈধ।

  • কারণ : এটি বিভিন্ন কারণে ঘটতে পারে, যেমন—সীমার বাইরের কোনো মান (যেমন, সর্বোচ্চ ধারণক্ষমতা) প্রদান করা, কোনো প্রয়োজনীয় ফিল্ড (যেমন, VehicleType ) পূরণ না করা, অথবা পিকআপ পয়েন্টের জন্য ভুল স্থানাঙ্ক প্রদান করা।
  • প্রতিকার : যে নির্দিষ্ট ফিল্ডটি অবৈধ, তার ত্রুটি বার্তাটি পর্যালোচনা করুন এবং নিশ্চিত করুন যে আপনার অনুরোধটি এপিআই (API) স্পেসিফিকেশন মেনে চলে।

FAILED_PRECONDITION (HTTP 400)

অপারেশনটি প্রত্যাখ্যান করা হয়েছে কারণ সিস্টেমটি অপারেশনটি সম্পাদনের জন্য প্রয়োজনীয় অবস্থায় নেই।

  • কারণ : সাধারণ কারণগুলোর মধ্যে রয়েছে একটি COMPLETE বা CANCELED ট্রিপকে অন্য অবস্থায় পরিবর্তন করার চেষ্টা, অথবা একটি CLOSED ) টাস্ক কোনো যানবাহনে বরাদ্দ করার চেষ্টা।
  • প্রতিকার : নিশ্চিত করুন যে সত্তাটির বর্তমান অবস্থা আপনি যে অপারেশনটি করার চেষ্টা করছেন তার জন্য উপযুক্ত। নির্দিষ্ট অবস্থা লঙ্ঘনের জন্য ত্রুটির বার্তাটি পরীক্ষা করুন।

UNAVAILABLE (HTTP 503)

পরিষেবাটি অনুপলব্ধ।

  • কারণ : এটি ফ্লিট ইঞ্জিন সার্ভিসের একটি সাময়িক সমস্যা নির্দেশ করে।
  • প্রতিকার : এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করে অনুরোধটি নিরাপদে পুনরায় চেষ্টা করা যেতে পারে।