Durum Yanıt Kodları

Aşağıdaki durum kodları gRPC yanıtlarında döndürülebilir. Bu, bu sitede belgelenen gRPC'nin tüm sürümleri için geçerlidir.

Kod Durum Notlar
0 OK Success tarihinde geri dönecek
1 CANCELLED İşlem genellikle arayan tarafından iptal edildi.
2 UNKNOWN Örneğin, başka bir adres alanından alınan bir durum değeri bu adres alanında bilinmeyen bir hata alanına aitse bu hata döndürülebilir. Ayrıca, API'ler tarafından oluşturulan ve yeterli hata bilgisi döndürmeyen hatalar da bu hataya dönüştürülebilir.
3 INVALID_ARGUMENT İstemci, geçersiz bir bağımsız değişken belirtti.
4 DEADLINE_EXCEEDED Son tarih, işlem tamamlanmadan önce doldu. Sistemin durumunu değiştiren işlemler başarıyla tamamlansa bile bu hata döndürülebilir. Örneğin, son tarihin dolmasına yetecek kadar gecikmeli bir yanıt alan sunucu.
5 NOT_FOUND İstenen bazı varlıklar bulunamadı.
6 ALREADY_EXISTS Bir istemcinin oluşturmaya çalıştığı varlık zaten mevcut.
7 PERMISSION_DENIED Arayan kullanıcının belirtilen işlemi gerçekleştirme izni yok. Bir kaynağın tükenmesinden kaynaklanan retler için PERMISSION_DENIED kullanmayın; bu hatalar için RESOURCE_EXHAUSTED kullanın. Arayan tanımlanamıyorsa PERMISSION_DENIED kullanmayın (bu tür hatalar için bunun yerine UNAUTHENTICATED kullanın). PERMISSION_DENIED hata kodu alması, isteğin geçerli olduğu veya istenen öğenin var olduğu ya da diğer ön koşulları karşıladığı anlamına gelmez.
8 RESOURCE_EXHAUSTED Kullanıcı başına kota gibi bir kaynak tükendi veya dosya sisteminin tamamında yer kalmadı.
9 FAILED_PRECONDITION Sistem, işlemin yürütülmesi için gereken durumda olmadığından işlem reddedildi. Örneğin, silinecek dizin boş değilse veya rmdir işlemi dizin olmayan bir yere uygulanırsa.
10 ABORTED İşlem, genellikle sıralayıcı kontrolü hatası veya işlem iptal edilmesi gibi bir eşzamanlılık sorunu nedeniyle iptal edildi.
11 OUT_OF_RANGE İşlem, geçerli aralık dışında gerçekleştirilmeye çalışıldı.
12 UNIMPLEMENTED İşlem bu hizmette uygulanmıyor veya desteklenmiyor/etkinleştirilmiyor.
13 INTERNAL Dahili hatalar. Bu, temel sistem tarafından beklenen bazı değişmez özelliklerin bozulduğu anlamına gelir. Bu hata kodu ciddi hatalar için ayrılmıştır.
14 UNAVAILABLE Hizmet şu anda kullanılamıyor. Bu büyük olasılıkla, geri çekilmeyle yeniden denendiğinde düzeltilebilecek geçici bir durumdur.
15 DATA_LOSS Kurtarılamaz veri kaybı veya bozulması.
16 UNAUTHENTICATED İstekte işlemle ilgili geçerli kimlik doğrulama bilgileri bulunmuyor.

Bazen birden fazla hata kodu geçerli olabilir. Hizmetler, geçerli olan en belirgin hata kodunu döndürmelidir. Örneğin, her iki kod da geçerliyse OUT_OF_RANGE yerine FAILED_PRECONDITION'ü tercih edin. Benzer şekilde, FAILED_PRECONDITION yerine NOT_FOUND veya ALREADY_EXISTS'u tercih edin.

FAILED_PRECONDITION, ABORTED ve UNAVAILABLE

Aşağıda, FAILED_PRECONDITION, ABORTED ve UNAVAILABLE arasında karar vermenize yardımcı olabilecek bir litmus testi verilmiştir:

  • İstemci yalnızca başarısız aramayı yeniden deneyebiliyorsa UNAVAILABLE değerini kullanın.
  • İstemcinin daha yüksek bir düzeyde yeniden denemesi gerekiyorsa (ör. istemci tarafından belirtilen bir test ve ayar işlemi başarısız olduğunda, bu durum istemcinin bir okuma-değiştirme-yazma sırasını yeniden başlatması gerektiğini gösterir) ABORTED değerini kullanın.
  • Sistem durumu açıkça düzeltilene kadar istemcinin yeniden denememesi gerekiyorsa FAILED_PRECONDITION değerini kullanın. Örneğin, bir "rmdir" işlemi, dizin boş olmadığı için başarısız olursa istemci, dizinden dosyalar silinmediği sürece yeniden deneme yapmaması gerektiğinden FAILED_PRECONDITION döndürülmesi en iyi seçenektir.

INVALID_ARGUMENT, FAILED_PRECONDITION ve OUT_OF_RANGE

Aşağıda, INVALID_ARGUMENT, FAILED_PRECONDITION ve OUT_OF_RANGE arasında karar vermenize yardımcı olabilecek bir litmus testi verilmiştir:

  • Sistem durumuna bakılmaksızın bağımsız değişkenler sorunluysa INVALID_ARGUMENT değerini kullanın. Örneğin: Yanlış biçimlendirilmiş bir URL
  • Bir değer, sistemin durumu nedeniyle aralık dışındaysa OUT_OF_RANGE değerini kullanın. Örneğin, start_date start_date_restrict tarihinden öncedir.
  • Değer, sistemin durumu nedeniyle geçersizse ancak OUT_OF_RANGE değeri değilse FAILED_PRECONDITION kullanın.