Tablestore Java SDK, hataları işlemek için istisnalar (exception) fırlatır. Bu konuda hata işleme yöntemleri, istisna ayrıntıları ve yeniden deneme ilkeleri açıklanmaktadır.
Yöntem
Bir API çağrısı istisna fırlatmıyorsa işlem başarılı olmuştur; aksi takdirde işlem başarısız olmuş demektir.
BatchGetRow ve BatchWriteRow gibi toplu işlemlerde istisnaları kontrol etmeniz ve her satırın durumunu doğrulamanız gerekir. API çağrısı yalnızca tüm satırlar başarıyla işlendiğinde başarılı kabul edilir.
İstisnalar
Tablestore Java SDK iki tür istisna içerir: ClientException ve TableStoreException. Her ikisi de RuntimeException sınıfından türetilmiştir.
ClientException: Yanlış parametre ayarından kaynaklananlar gibi dahili SDK istisnalarıdır.
-
TableStoreException: Sunucudan alınan hata mesajı ayrıştırılarak oluşturulan sunucu tarafı hatadır. Bir TableStoreException nesnesi aşağıdaki üyeleri içerir:
getHttpStatus(): 200 veya 404 gibi HTTP dönüş kodudur.
getErrorCode(): Tablestore tarafından döndürülen hata kodu dizesidir.
getRequestId(): İsteği benzersiz şekilde tanımlayan evrensel benzersiz tanımlayıcıdır (UUID). Bir sorunu çözemezseniz bu RequestId değerini kaydedin ve destek bileti gönderin.
Yeniden Deneme
SDK bir hata oluştuğunda işlemi otomatik olarak yeniden dener. Varsayılan olarak SDK yalnızca kısıtlama hataları veya sunucu tarafı iç hatalar nedeniyle başarısız olan okuma işlemlerini yeniden dener. Varsayılan yeniden deneme ilkesinin maksimum süresi 10 saniyedir.
RetryStrategy sınıfından türeyerek özel bir yeniden deneme ilkesi uygulayabilir ve OTSClient nesnesini oluştururken bu özel ilkeyi parametre olarak geçirebilirsiniz.
SDK içinde aşağıdaki yeniden deneme ilkeleri uygulanmıştır:
DefaultRetryStrategy: Varsayılan yeniden deneme ilkesidir. Yalnızca okuma işlemlerini yeniden dener. Yeniden deneme aralığı 10 ms'den başlayarak üstel olarak artar ve maksimum süre 10 saniyedir.
AlwaysRetryStrategy: Tüm istek türlerini en fazla üç kez yeniden dener. Yeniden deneme aralığı 4 ms'den başlayarak üstel olarak artar ve maksimum aralık 1 saniyedir.