Code

gRPC API के लिए कैननिकल गड़बड़ी कोड.

कभी-कभी एक से ज़्यादा गड़बड़ी कोड लागू हो सकते हैं. सेवाओं से सबसे खास गड़बड़ी कोड दिखना चाहिए. उदाहरण के लिए, अगर दोनों कोड लागू होते हैं, तो FAILED_PRECONDITION के बजाय OUT_OF_RANGE को प्राथमिकता दें. इसी तरह, FAILED_PRECONDITION के बजाय NOT_FOUND या ALREADY_EXISTS पसंद करें.

Enums
OK

कोई गड़बड़ी नहीं. कामयाब रहा.

एचटीटीपी मैपिंग: 200 OK

CANCELLED

आम तौर पर, कॉलर ने कार्रवाई रद्द कर दी.

एचटीटीपी मैपिंग: 499 क्लाइंट की ओर से बंद किया गया अनुरोध

UNKNOWN

ऐसी गड़बड़ी जिसके बारे में कोई जानकारी नहीं है. उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी दूसरी जगह से मिली Status वैल्यू किसी ऐसी गड़बड़ी वाले स्पेस में जोड़ी गई हो जो इस ऐड्रेस स्पेस में मौजूद न हो. साथ ही, एपीआई से मिली उन गड़बड़ियों को भी गड़बड़ी में बदला जा सकता है जो ज़रूरी जानकारी नहीं देती हैं.

एचटीटीपी मैपिंग: 500 सर्वर में गड़बड़ी

INVALID_ARGUMENT

क्लाइंट ने एक अमान्य तर्क बताया. ध्यान दें कि यह FAILED_PRECONDITION से अलग है. INVALID_ARGUMENT ऐसे आर्ग्युमेंट के बारे में बताता है जो सिस्टम की स्थिति (भले ही कोई गलत फ़ाइल नाम) की परवाह किए बिना समस्या पैदा करते हों.

एचटीटीपी मैपिंग: 400 गलत अनुरोध

DEADLINE_EXCEEDED

कार्रवाई की समयसीमा खत्म हुई. सिस्टम की स्थिति बदलने वाले ऑपरेशन के लिए, यह गड़बड़ी दिखाई दे सकती है. भले ही ऑपरेशन पूरी तरह से पूरी हुई हो. उदाहरण के लिए, किसी सर्वर से सही रिस्पॉन्स मिलने में तय समय से ज़्यादा देरी हो सकती है.

एचटीटीपी मैपिंग: 504 गेटवे टाइम आउट

NOT_FOUND

अनुरोध की गई कुछ इकाई (जैसे, फ़ाइल या निर्देशिका) नहीं मिली.

सर्वर डेवलपर के लिए नोट: अगर सभी उपयोगकर्ताओं के लिए किसी अनुरोध को अस्वीकार किया जाता है, जैसे कि धीरे-धीरे सुविधा रोल आउट करना या ऐप्लिकेशन को अनुमति वाली सूची में शामिल नहीं करना, तो NOT_FOUND का इस्तेमाल किया जा सकता है. अगर किसी व्यक्ति के अनुरोध को अस्वीकार किया जाता है, तो PERMISSION_DENIED का इस्तेमाल किया जाना चाहिए. जैसे, उपयोगकर्ता की कैटगरी के हिसाब से ऐक्सेस कंट्रोल.

एचटीटीपी मैपिंग: 404 नहीं मिला

ALREADY_EXISTS

क्लाइंट ने जिस इकाई (उदाहरण के लिए, फ़ाइल या डायरेक्ट्री) को बनाने की कोशिश की वह पहले से मौजूद है.

एचटीटीपी मैपिंग: 409 कॉन्फ़्लिक्ट

PERMISSION_DENIED

कॉल करने वाले के पास बताई गई कार्रवाई को करने की अनुमति नहीं है. कुछ संसाधनों को खत्म कर देने की वजह से अस्वीकार किए जाने के लिए PERMISSION_DENIED का इस्तेमाल नहीं किया जाना चाहिए (इन गड़बड़ियों के बजाय RESOURCE_EXHAUSTED का इस्तेमाल करें). अगर कॉलर की पहचान नहीं की जा सकती, तो PERMISSION_DENIED का इस्तेमाल नहीं करना चाहिए. इन गड़बड़ियों के बजाय, UNAUTHENTICATED का इस्तेमाल करें. इस गड़बड़ी कोड से यह नहीं पता चलता कि अनुरोध मान्य है या अनुरोध की गई इकाई मौजूद है या पहले से मौजूद शर्तों को पूरा करती है.

एचटीटीपी मैपिंग: 403 अनुमति नहीं है

UNAUTHENTICATED

इस कार्रवाई के लिए अनुरोध में पुष्टि करने के लिए मान्य क्रेडेंशियल नहीं हैं.

एचटीटीपी मैपिंग: 401 अनधिकृत

RESOURCE_EXHAUSTED

कुछ संसाधनों को इस्तेमाल करने की समयसीमा खत्म हो चुकी है. शायद, हर उपयोगकर्ता के लिए कोटा की सीमा खत्म हो गई हो या पूरे फ़ाइल सिस्टम में जगह न बची हो.

एचटीटीपी मैपिंग: 429 बहुत ज़्यादा अनुरोध

FAILED_PRECONDITION

कार्रवाई अस्वीकार कर दी गई, क्योंकि कार्रवाई की प्रोसेस के लिए, सिस्टम ज़रूरी स्थिति में नहीं है. उदाहरण के लिए, मिटाई जाने वाली डायरेक्ट्री खाली नहीं होती है. साथ ही, किसी गैर-डायरेक्ट्री पर rmdir कार्रवाई लागू की जाती है.

सेवा लागू करने वाले, FAILED_PRECONDITION, ABORTED, और UNAVAILABLE के बीच फ़ैसला लेने के लिए इन दिशा-निर्देशों का इस्तेमाल कर सकते हैं: (a) UNAVAILABLE का इस्तेमाल तब करें, जब क्लाइंट सिर्फ़ फ़ेल होने वाले कॉल के लिए फिर से कोशिश कर सके. (b) अगर क्लाइंट को ज़्यादा लेवल पर कोशिश करनी है, तो ABORTED का इस्तेमाल करें. उदाहरण के लिए, जब कोई क्लाइंट के लिए तय किया गया टेस्ट और सेट काम नहीं कर रहा, तो यह बताता है कि क्लाइंट को Read-write-write को रीस्टार्ट करना है. (c) अगर क्लाइंट को तब तक फिर से कोशिश नहीं करनी चाहिए, जब तक सिस्टम की स्थिति ठीक नहीं हो जाती, तो FAILED_PRECONDITION का इस्तेमाल करें. उदाहरण के लिए, अगर डायरेक्ट्री खाली न होने की वजह से "rmdir" काम नहीं करता, तो FAILED_PRECONDITION को रिटर्न करना चाहिए, क्योंकि क्लाइंट को तब तक फिर से कोशिश नहीं करनी चाहिए, जब तक डायरेक्ट्री से फ़ाइलें मिटा नहीं दी जाती हैं.

एचटीटीपी मैपिंग: 400 गलत अनुरोध

ABORTED

यह कार्रवाई रद्द कर दी गई थी, क्योंकि आम तौर पर एक साथ चल रहे किसी मामले में, सीक्वेंस चेक का काम नहीं करना पड़ता या लेन-देन रद्द हो जाता था.

FAILED_PRECONDITION, ABORTED, और UNAVAILABLE के बीच फ़ैसला लेने के लिए ऊपर दिए गए दिशा-निर्देश देखें.

एचटीटीपी मैपिंग: 409 कॉन्फ़्लिक्ट

OUT_OF_RANGE

मान्य रेंज से कार्रवाई की कोशिश की गई. जैसे कि फ़ाइल के आखिर में मौजूद डेटा ढूंढना या पढ़ना.

INVALID_ARGUMENT से अलग, यह गड़बड़ी एक समस्या की ओर इशारा करती है. सिस्टम की स्थिति बदलने पर इसे ठीक किया जा सकता है. उदाहरण के लिए, अगर किसी ऐसे ऑफ़सेट पर पढ़ने के लिए कहा जाता है जो [0,2^32-1] की रेंज में नहीं है, तो 32-बिट वाला फ़ाइल सिस्टम INVALID_ARGUMENT जनरेट करेगा. हालांकि, मौजूदा फ़ाइल के साइज़ के अलावा, किसी ऑफ़सेट से पढ़ने के लिए अनुरोध करने पर यह OUT_OF_RANGE जनरेट करेगा.

FAILED_PRECONDITION और OUT_OF_RANGE के बीच ओवरलैप सही है. हमारा सुझाव है कि जब लागू हो, तो OUT_OF_RANGE (ज़्यादा गड़बड़ी) का इस्तेमाल करें, ताकि किसी स्पेस के ज़रिए कॉल करने वाले कॉलर जब काम पूरा कर लें, तब आसानी से OUT_OF_RANGE गड़बड़ी ढूंढ सकें.

एचटीटीपी मैपिंग: 400 गलत अनुरोध

UNIMPLEMENTED

कार्रवाई लागू नहीं की गई या इस सेवा में काम नहीं कर रहा है.

एचटीटीपी मैपिंग: 501 लागू नहीं किया गया

INTERNAL

अंदरूनी गड़बड़ियां. इसका मतलब है कि दिए गए सिस्टम में कुछ वैरिएंट काम नहीं कर रहे हैं. गड़बड़ी का यह कोड, गंभीर गड़बड़ियों के लिए रिज़र्व है.

एचटीटीपी मैपिंग: 500 सर्वर में गड़बड़ी

UNAVAILABLE

फ़िलहाल, सेवा उपलब्ध नहीं है. यह बहुत कम समय के लिए होती है, जिसे बैकऑफ़ के साथ फिर से कोशिश करके ठीक किया जा सकता है. ध्यान दें कि किसी भी ऐसी गतिविधि के लिए फिर से कोशिश करना हमेशा सुरक्षित नहीं होता जो किसी काम को नहीं करती.

FAILED_PRECONDITION, ABORTED, और UNAVAILABLE के बीच फ़ैसला लेने के लिए ऊपर दिए गए दिशा-निर्देश देखें.

एचटीटीपी मैपिंग: 503 सेवा उपलब्ध नहीं है

DATA_LOSS

डेटा वापस न मिलने या खराब होने की वजह से, डेटा वापस नहीं पाया जा सकता.

एचटीटीपी मैपिंग: 500 सर्वर में गड़बड़ी