स्टेटस रिस्पॉन्स कोड

gRPC रिस्पॉन्स में, नीचे दिए गए स्टेटस कोड दिखाए जा सकते हैं. यह इस साइट पर मौजूद gRPC के सभी वर्शन पर लागू होता है.

कोड स्थिति नोट
0 OK Success को वापस आना
1 CANCELLED कार्रवाई रद्द कर दी गई थी. आम तौर पर, कॉल करने वाले ने ऐसा किया था.
2 UNKNOWN उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी दूसरे पते के स्पेस से मिली स्थिति की वैल्यू, गड़बड़ी वाले उस स्पेस से जुड़ी हो जो इस पते के स्पेस में मौजूद नहीं है. साथ ही, एपीआई से मिली गड़बड़ियों को भी इस गड़बड़ी में बदला जा सकता है. हालांकि, इसके लिए ज़रूरी है कि एपीआई से मिली गड़बड़ी की जानकारी पूरी हो.
3 INVALID_ARGUMENT क्लाइंट ने एक अमान्य आर्ग्युमेंट दिया है.
4 DEADLINE_EXCEEDED ऑपरेशन पूरा होने से पहले ही समयसीमा खत्म हो गई. सिस्टम की स्थिति में बदलाव करने वाली कार्रवाइयों के लिए, यह गड़बड़ी तब भी दिख सकती है, जब कार्रवाई पूरी हो गई हो. उदाहरण के लिए, किसी ऐसे सर्वर से जवाब मिलना जिसे जवाब देने में इतना समय लगा कि समयसीमा खत्म हो गई.
5 NOT_FOUND अनुरोध की गई कोई इकाई नहीं मिली.
6 ALREADY_EXISTS क्लाइंट ने जिस इकाई को बनाने की कोशिश की वह पहले से मौजूद है.
7 PERMISSION_DENIED कॉलर के पास, बताई गई कार्रवाई करने की अनुमति नहीं है. किसी संसाधन के खत्म होने की वजह से अस्वीकार किए जाने वाले अनुरोधों के लिए, PERMISSION_DENIED का इस्तेमाल न करें. इसके बजाय, उन गड़बड़ियों के लिए RESOURCE_EXHAUSTED का इस्तेमाल करें. अगर कॉलर की पहचान नहीं की जा सकती, तो PERMISSION_DENIED का इस्तेमाल न करें. ऐसी गड़बड़ियों के लिए, UNAUTHENTICATED का इस्तेमाल करें. PERMISSION_DENIED गड़बड़ी कोड मिलने का मतलब यह नहीं है कि अनुरोध मान्य है या अनुरोध की गई इकाई मौजूद है या अन्य ज़रूरी शर्तों को पूरा करती है.
8 RESOURCE_EXHAUSTED हो सकता है कि कोई रिसॉर्स खत्म हो गया हो. जैसे, हर उपयोगकर्ता के लिए तय कोटा या पूरे फ़ाइल सिस्टम में जगह खत्म हो गई हो.
9 FAILED_PRECONDITION कार्रवाई अस्वीकार कर दी गई, क्योंकि सिस्टम उस स्थिति में नहीं है जो कार्रवाई को पूरा करने के लिए ज़रूरी है. उदाहरण के लिए, मिटाने के लिए चुनी गई डायरेक्ट्री में कोई आइटम मौजूद है या rmdir कमांड किसी ऐसी डायरेक्ट्री पर लागू किया गया है जो डायरेक्ट्री नहीं है.
10 ABORTED ऑपरेशन को रोक दिया गया था. आम तौर पर, ऐसा एक साथ कई टास्क करने से जुड़ी समस्या की वजह से होता है. जैसे, सीक्वेंसर की जांच न हो पाना या लेन-देन रोकना.
11 OUT_OF_RANGE कार्रवाई, मान्य रेंज के बाद की गई थी.
12 UNIMPLEMENTED यह कार्रवाई लागू नहीं की गई है या इस सेवा में यह काम नहीं करता/चालू नहीं है.
13 INTERNAL अंदरूनी गड़बड़ियां. इसका मतलब है कि सिस्टम में मौजूद कुछ इनवैरिएंट काम नहीं कर रहे हैं. गड़बड़ी का यह कोड, गंभीर गड़बड़ियों के लिए है.
14 UNAVAILABLE फ़िलहाल, सेवा उपलब्ध नहीं है. ज़्यादातर मामलों में, यह एक अस्थायी स्थिति होती है. बैकऑफ़ की मदद से फिर से कोशिश करने पर, इसे ठीक किया जा सकता है.
15 DATA_LOSS डेटा को वापस नहीं पाया जा सकता या डेटा खराब हो गया.
16 UNAUTHENTICATED अनुरोध में, कार्रवाई के लिए पुष्टि करने वाले मान्य क्रेडेंशियल नहीं हैं.

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

FAILED_PRECONDITION बनाम ABORTED बनाम UNAVAILABLE

यहां एक लिटमस टेस्ट दिया गया है. इससे आपको FAILED_PRECONDITION, ABORTED, और UNAVAILABLE में से किसी एक को चुनने में मदद मिल सकती है:

  • अगर क्लाइंट सिर्फ़ उस कॉल को फिर से आज़मा सकता है जो पूरा नहीं हुआ, तो UNAVAILABLE का इस्तेमाल करें.
  • अगर क्लाइंट को किसी ज़्यादा लेवल पर फिर से कोशिश करनी है, तो ABORTED का इस्तेमाल करें. जैसे, जब क्लाइंट की ओर से तय की गई जांच और सेट करने की प्रोसेस पूरी न हो, तो इसका मतलब है कि क्लाइंट को पढ़ने-बदलाव करने-लिखने के क्रम को फिर से शुरू करना चाहिए.
  • FAILED_PRECONDITION का इस्तेमाल तब करें, जब सिस्टम की स्थिति ठीक होने तक क्लाइंट को फिर से कोशिश नहीं करनी चाहिए. उदाहरण के लिए, अगर डायरेक्ट्री में फ़ाइलें मौजूद होने की वजह से "rmdir" काम नहीं करता है, तो FAILED_PRECONDITION दिखाना सबसे सही होता है. ऐसा इसलिए, क्योंकि जब तक डायरेक्ट्री से फ़ाइलें नहीं मिटाई जातीं, तब तक क्लाइंट को फिर से कोशिश नहीं करनी चाहिए.

INVALID_ARGUMENT बनाम FAILED_PRECONDITION बनाम OUT_OF_RANGE

यहां एक लिटमस टेस्ट दिया गया है. इससे आपको INVALID_ARGUMENT, FAILED_PRECONDITION, और OUT_OF_RANGE में से किसी एक को चुनने में मदद मिल सकती है:

  • अगर सिस्टम की स्थिति के बावजूद, आर्ग्युमेंट में समस्या है, तो INVALID_ARGUMENT का इस्तेमाल करें. उदाहरण के लिए: गलत यूआरएल
  • अगर सिस्टम की स्थिति की वजह से कोई वैल्यू सीमा से बाहर है, तो OUT_OF_RANGE का इस्तेमाल करें. उदाहरण के लिए, start_date, start_date_restrict से पहले की है.
  • अगर सिस्टम की स्थिति की वजह से वैल्यू अमान्य है, लेकिन वह OUT_OF_RANGE वैल्यू नहीं है, तो FAILED_PRECONDITION का इस्तेमाल करें.