Sorun yaşarsanız yardım için aşağıdaki bölümleri inceleyin.
Fleet Engine'de kayıp durumu
Fleet Engine ile çalışırken uygulamanızı hataları önleyecek şekilde tasarlayın. Örneğin, Fleet Engine'e bir aracı güncelleme isteği gönderdiğinizde araç mevcut değilse hata yanıtı alabilirsiniz. Uygulamanız daha sonra aracı yeni durumda yeniden oluşturmalıdır.
Fleet Engine'in felaketle sonuçlanan bir arızası gibi son derece düşük ihtimalli bir senaryoda, araçların ve görevlerin çoğunu veya tamamını yeniden oluşturmanız gerekebilir. Oluşturma hızı çok yükselirse hizmet reddi (DOS) saldırılarını önlemek için kota kontrolleri yapıldığından bazı istekler kota sorunları nedeniyle tekrar başarısız olabilir. Bu durumda, yeniden denemeler için geri yükleme aralığı stratejisi kullanarak yeniden oluşturma hızını yavaşlatın.
Yeniden deneme sayısı
Sisteminize Fleet Engine'e yapılan istekler için yeniden deneme uyguladığınızdan emin olun. Bu istekler zaman zaman başarısız olabilir. Fleet Engine istemci kitaplıkları, varsayılan olarak yeniden deneme isteğinde bulunur.
Sürücü uygulamasında durumun kaybolması
Sürücü uygulaması çökerse uygulama, mevcut durumu Sürücü SDK'sında yeniden oluşturmalıdır. Uygulama, görevlerin mevcut olduğundan ve mevcut durumlarının geri yüklendiğinden emin olmak için görevleri yeniden oluşturmaya çalışmalıdır. Uygulama ayrıca, Driver SDK'nın durak listesini yeniden oluşturmalı ve açıkça ayarlamalıdır.
Not: Bu geri yüklemeler, bir öğenin veritabanında mevcut olup olmadığını ve ne zaman mevcut olduğunu belirten hatalar dışında, Fleet Engine'den alınan bilgilere dayanmadan bağımsız olarak yapılmalıdır. Bir öğe zaten varsa bu hata giderilebilir ve öğe kimliği kullanılarak güncellenebilir.
Son tarih aşıldı hataları
Fleet Engine'i çağırırken DEADLINE_EXCEEDED hatası alırsanız istek, yapılandırılan zaman aşımından daha uzun sürmüştür. Fleet Engine istemci kitaplıklarında varsayılan zaman aşımları vardır ancak bunları ayarlamanız gerekebilir.
gRPC son tarihleri hakkında genel bilgi için gRPC ve Son Tarihler başlıklı makaleyi inceleyin.
Fleet Engine Java istemci kitaplığını kullanırken son tarihi yapılandırmak için RPC yeniden deneme ayarlarını düzenleyebilirsiniz. Aşağıdaki örnekte, VehicleService ayarlanırken özel bir zaman aşımının nasıl yapılandırılacağı gösterilmektedir:
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());
Sık karşılaşılan API hataları
Bu bölümde, karşılaşabileceğiniz yaygın API hataları, nedenleri ve nasıl çözülecekleri listelenmektedir.
NOT_FOUND (HTTP 404)
İstenen öğe (ör. araç, gezi veya görev) bulunamadı.
- Neden: Genellikle veritabanında bulunmayan bir kimlik kullanarak bir öğeyi almaya, güncellemeye veya silmeye çalışmaktan kaynaklanır.
- Düzeltme: Öğeye erişmeye çalışmadan önce öğe kimliğinin doğru olduğunu ve öğenin başarıyla oluşturulduğunu doğrulayın.
ALREADY_EXISTS (HTTP 409)
Oluşturmaya çalıştığınız varlık zaten mevcut.
- Neden:
CreateVehicleveyaCreateTripgibi bir oluşturma yöntemi, zaten kullanımda olan bir kimlikle çağrıldığında bu hataya neden olur. - Düzeltme: Bunun yerine mevcut varlığı güncelleyin veya oluşturma isteği için yeni bir benzersiz kimlik kullanın.
PERMISSION_DENIED (HTTP 403)
İsteği tamamlamak için gerekli izinlere sahip değilsiniz.
- Neden: Bu durum genellikle JSON Web Token'ınızda (JWT) doğru talepler eksikse veya JWT'yi imzalayan hizmet hesabında gerekli IAM rolleri eksikse oluşur. Örneğin, "JWT, istenen gezi için eşleşen bir kapsam içermiyor."
- Düzeltme: Hizmet hesabı izinlerinizi kontrol edin ve JWT taleplerinizin, erişmeye çalıştığınız öğe için doğru kapsamları içerdiğinden emin olun.
INVALID_ARGUMENT (HTTP 400)
İstekle iletilen bağımsız değişkenlerden biri veya daha fazlası geçersiz.
- Neden: Bu durum, aralık dışında bir değer (ör. maksimum kapasite) sağlama, gerekli bir alanı (ör.
VehicleType) atlama veya teslim alma noktası için geçersiz koordinatlar sağlama gibi çeşitli nedenlerden kaynaklanabilir. - Düzeltme: Geçersiz olan belirli alanla ilgili hata mesajını inceleyin ve isteğinizin API spesifikasyonuna uygun olduğundan emin olun.
FAILED_PRECONDITION (HTTP 400)
Sistem, işlemin yürütülmesi için gerekli durumda olmadığından işlem reddedildi.
- Neden: Yaygın nedenler arasında
COMPLETEveyaCANCELEDgezisini farklı bir eyalete değiştirmeye çalışmak ya daCLOSEDgörevini bir araca atamaya çalışmak yer alır. - Düzeltme: Varlığın mevcut durumunun, denediğiniz işleme izin verdiğinden emin olun. Eyaletlere özgü ihlaller için hata mesajını kontrol edin.
UNAVAILABLE (HTTP 503)
Hizmet kullanılamıyor.
- Nedeni: Bu, Fleet Engine hizmetiyle ilgili geçici bir soruna işaret eder.
- Düzeltme: İstek, üstel geri yüklemeyle güvenli bir şekilde yeniden denenebilir.