अगर आपको कोई समस्या आती है, तो मदद पाने के लिए यहां दिए गए सेक्शन देखें.
Fleet Engine में खोए हुए डिवाइस की स्थिति
Fleet Engine के साथ काम करते समय, अपने सिस्टम को इस तरह से डिज़ाइन करें कि वह गड़बड़ियों का अनुमान लगा सके. उदाहरण के लिए, अगर आपने Fleet Engine को किसी वाहन की जानकारी अपडेट करने का अनुरोध भेजा है, तो हो सकता है कि आपको गड़बड़ी का मैसेज मिले. इसमें बताया जा सकता है कि वाहन मौजूद नहीं है. इसके बाद, आपके लागू किए गए कोड को नई स्थिति में वाहन को फिर से बनाना चाहिए.
अगर Fleet Engine में कोई गंभीर गड़बड़ी होती है, तो आपको ज़्यादातर या सभी वाहनों और टास्क को फिर से बनाना पड़ सकता है. हालांकि, ऐसा होने की संभावना बहुत कम है. अगर खाता बनाने की दर बहुत ज़्यादा हो जाती है, तो कोटे की समस्याओं की वजह से कुछ अनुरोध फिर से अस्वीकार हो सकते हैं. ऐसा इसलिए, क्योंकि सेवा में रुकावट (डीओएस) वाले हमलों से बचने के लिए, कोटे की जांच की जाती है. ऐसे में, फिर से कोशिश करने के लिए बैकऑफ़ रणनीति का इस्तेमाल करके, फिर से बनाने की दर को कम करें.
फिर से कोशिश करने की संख्या
पक्का करें कि आपका सिस्टम, Fleet Engine को भेजे गए अनुरोधों को फिर से भेजने की कोशिश करता हो. ऐसा इसलिए, क्योंकि कभी-कभी अनुरोध पूरे नहीं हो पाते. Fleet Engine की क्लाइंट लाइब्रेरी, डिफ़ॉल्ट रूप से फिर से कोशिश करती हैं.
ड्राइवर ऐप्लिकेशन में 'खो गया' स्टेटस
अगर ड्राइवर ऐप्लिकेशन क्रैश हो जाता है, तो ऐप्लिकेशन को ड्राइवर एसडीके में मौजूदा स्थिति को फिर से बनाना होगा. ऐप्लिकेशन को टास्क फिर से बनाने की कोशिश करनी चाहिए, ताकि यह पक्का किया जा सके कि वे मौजूद हैं. साथ ही, उनकी मौजूदा स्थितियों को पहले जैसा किया जा सके. ऐप्लिकेशन को ड्राइवर एसडीके के लिए, स्टॉप की सूची को फिर से बनाना चाहिए और उसे साफ़ तौर पर सेट करना चाहिए.
ध्यान दें: डेटा को वापस लाने की प्रोसेस अपने-आप होनी चाहिए. इसके लिए, Fleet Engine से मिली जानकारी पर निर्भर नहीं रहना चाहिए. हालांकि, अगर डेटाबेस में कोई इकाई पहले से मौजूद है, तो गड़बड़ियों की जानकारी देने के लिए Fleet Engine का इस्तेमाल किया जा सकता है. अगर कोई इकाई पहले से मौजूद है, तो उस गड़बड़ी को ठीक किया जा सकता है. साथ ही, इकाई को उसके आईडी का इस्तेमाल करके अपडेट किया जा सकता है.
समयसीमा खत्म होने से जुड़ी गड़बड़ियां
अगर Fleet Engine को कॉल करते समय आपको DEADLINE_EXCEEDED गड़बड़ी मिलती है, तो इसका मतलब है कि अनुरोध को पूरा होने में, कॉन्फ़िगर किए गए टाइम आउट से ज़्यादा समय लगा. Fleet Engine की क्लाइंट लाइब्रेरी में, टाइम आउट की डिफ़ॉल्ट सेटिंग होती हैं. हालांकि, आपको उनमें बदलाव करना पड़ सकता है.
gRPC की समयसीमाओं के बारे में सामान्य जानकारी के लिए, gRPC और समयसीमाएं देखें.
Fleet Engine Java क्लाइंट लाइब्रेरी का इस्तेमाल करते समय, समयसीमा कॉन्फ़िगर करने के लिए, आरपीसी को फिर से कोशिश करने की सेटिंग में बदलाव किया जा सकता है. यहां दिए गए उदाहरण में, 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());
एपीआई से जुड़ी सामान्य गड़बड़ियां
इस सेक्शन में, एपीआई से जुड़ी आम गड़बड़ियों की सूची दी गई है. साथ ही, उनके होने की वजहें और उन्हें ठीक करने का तरीका बताया गया है.
NOT_FOUND (एचटीटीपी 404)
अनुरोध की गई इकाई (जैसे, कोई वाहन, यात्रा या टास्क) नहीं मिली.
- वजह: आम तौर पर, यह गड़बड़ी तब होती है, जब किसी ऐसी इकाई को पाने, अपडेट करने या मिटाने की कोशिश की जाती है जिसका आईडी डेटाबेस में मौजूद नहीं है.
- समस्या हल करना: पुष्टि करें कि इकाई का आईडी सही है और इकाई को ऐक्सेस करने से पहले, उसे सही तरीके से बनाया गया है.
ALREADY_EXISTS (एचटीटीपी 409)
आपको जो इकाई बनानी है वह पहले से मौजूद है.
- वजह: यह गड़बड़ी तब होती है, जब पहले से इस्तेमाल किए जा रहे आईडी के साथ,
CreateVehicleयाCreateTripजैसे किसी क्रिएट मेथड को कॉल किया जाता है. - समस्या हल करने का तरीका: इसके बजाय, मौजूदा इकाई को अपडेट करें या इकाई बनाने के अनुरोध के लिए, नए यूनीक आईडी का इस्तेमाल करें.
PERMISSION_DENIED (एचटीटीपी 403)
अनुरोध पूरा करने के लिए, आपके पास ज़रूरी अनुमतियां नहीं हैं.
- वजह: आम तौर पर, ऐसा तब होता है, जब आपके JSON वेब टोकन (JWT) में सही दावे मौजूद न हों या JWT पर हस्ताक्षर करने वाले सेवा खाते में ज़रूरी आईएएम भूमिकाएं मौजूद न हों. उदाहरण के लिए, "JWT में अनुरोध की गई यात्रा के लिए, मैच होने वाला स्कोप शामिल नहीं है."
- समस्या हल करने का तरीका: अपने सेवा खाते की अनुमतियां देखें. साथ ही, पक्का करें कि आपके JWT क्लेम में उस इकाई के लिए सही स्कोप शामिल हों जिसे ऐक्सेस करने की कोशिश की जा रही है.
INVALID_ARGUMENT (एचटीटीपी 400)
अनुरोध में पास किए गए एक या उससे ज़्यादा आर्ग्युमेंट अमान्य हैं.
- वजह: ऐसा कई वजहों से हो सकता है. जैसे, रेंज से बाहर की वैल्यू देना (उदाहरण के लिए, ज़्यादा से ज़्यादा क्षमता), ज़रूरी फ़ील्ड मौजूद न होना (उदाहरण के लिए,
VehicleType), या पिकअप पॉइंट के लिए अमान्य निर्देशांक देना. - समस्या हल करने का तरीका: अमान्य फ़ील्ड के लिए गड़बड़ी का मैसेज देखें और पक्का करें कि आपका अनुरोध, एपीआई की खास बातों के मुताबिक हो.
FAILED_PRECONDITION (एचटीटीपी 400)
कार्रवाई को अस्वीकार कर दिया गया, क्योंकि सिस्टम उस स्थिति में नहीं है जो कार्रवाई को पूरा करने के लिए ज़रूरी है.
- वजह: आम तौर पर, ऐसा तब होता है, जब किसी
COMPLETEयाCANCELEDयात्रा को किसी दूसरे राज्य में बदलने की कोशिश की जाती है या किसी वाहन कोCLOSEDटास्क असाइन करने की कोशिश की जाती है. - समस्या हल करने का तरीका: पक्का करें कि इकाई की मौजूदा स्थिति, उस कार्रवाई की अनुमति देती हो जिसे करने की कोशिश की जा रही है. राज्य के हिसाब से उल्लंघन की जानकारी पाने के लिए, गड़बड़ी का मैसेज देखें.
UNAVAILABLE (एचटीटीपी 503)
यह सेवा उपलब्ध नहीं है.
- वजह: इससे पता चलता है कि Fleet Engine सेवा में कुछ समय के लिए कोई समस्या आई है.
- समस्या हल करने का तरीका: एक्स्पोनेंशियल बैकऑफ़ के साथ, अनुरोध को सुरक्षित तरीके से फिर से भेजा जा सकता है.