In caso di problemi, consulta le sezioni seguenti per ricevere assistenza.
Stato di perdita in Fleet Engine
Quando lavori con Fleet Engine, progetta l'implementazione in modo da prevedere gli errori. Ad esempio, se invii una richiesta a Fleet Engine per aggiornare un veicolo, potrebbe rispondere con un errore che indica che il veicolo non esiste. L'implementazione deve quindi ricreare il veicolo nel nuovo stato.
Nell'improbabile scenario di un errore irreversibile di Fleet Engine, potresti dover ricreare la maggior parte o tutti i veicoli e le attività. Se la frequenza di creazione diventa troppo elevata, alcune richieste potrebbero non riuscire di nuovo a causa di problemi di quota, poiché sono in atto controlli della quota per evitare attacchi Denial of Service (DOS). In questo caso, rallenta la frequenza di ricreazione utilizzando una strategia di backoff per i nuovi tentativi.
Nuovi tentativi
Assicurati che il tuo sistema implementi i nuovi tentativi per le richieste a Fleet Engine, poiché occasionalmente potrebbero non riuscire. Le librerie client di Fleet Engine eseguono i nuovi tentativi per impostazione predefinita.
Stato di smarrimento nell'app per conducenti
Se l'app per i conducenti si arresta in modo anomalo, deve ricreare lo stato attuale all'interno dell'SDK Driver. L'app deve tentare di ricreare le attività per assicurarsi che esistano e per ripristinare i loro stati attuali. L'app deve anche ricreare e impostare in modo esplicito l'elenco delle fermate per l'SDK Driver.
Nota: questi ripristini devono essere eseguiti in modo autonomo senza fare affidamento sulle informazioni di Fleet Engine, ad eccezione degli errori che indicano se e quando un'entità esiste già nel database. Se un'entità esiste già, l'errore può essere assorbito e l'entità può essere aggiornata utilizzando il suo ID.
Errori di scadenza superata
Se ricevi un errore DEADLINE_EXCEEDED quando chiami Fleet Engine, la richiesta ha richiesto più tempo del timeout configurato. Le librerie client di Fleet Engine hanno timeout predefiniti, ma potrebbe essere necessario modificarli.
Per informazioni generali sulle scadenze gRPC, consulta gRPC and Deadlines.
Per configurare la scadenza quando utilizzi la libreria client Java di Fleet Engine, puoi modificare le impostazioni dei nuovi tentativi RPC. L'esempio seguente mostra come configurare un timeout personalizzato durante la configurazione di VehicleService:
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());
Errori API comuni
Questa sezione elenca gli errori comuni dell'API che potresti riscontrare, le relative cause e come risolverli.
NOT_FOUND (HTTP 404)
Impossibile trovare l'entità richiesta (ad esempio un veicolo, un percorso o un'attività).
- Causa: in genere è causato dal tentativo di recuperare, aggiornare o eliminare un'entità utilizzando un ID che non esiste nel database.
- Correzione: verifica che l'ID entità sia corretto e che l'entità sia stata creata correttamente prima di tentare di accedervi.
ALREADY_EXISTS (HTTP 409)
L'entità che stai tentando di creare esiste già.
- Causa: causato dalla chiamata di un metodo di creazione (come
CreateVehicleoCreateTrip) con un ID già in uso. - Correzione: aggiorna l'entità esistente o utilizza un nuovo ID univoco per la richiesta di creazione.
PERMISSION_DENIED (HTTP 403)
Non disponi delle autorizzazioni necessarie per completare la richiesta.
- Causa: in genere questo accade se nel token JWT (JSON Web Token) mancano le attestazioni corrette o se al service account che firma il JWT mancano i ruoli IAM richiesti. Ad esempio, "JWT does not contain a matching scope for requested trip."
- Correzione: controlla le autorizzazioni del service account e assicurati che le attestazioni JWT includano gli ambiti corretti per l'entità a cui stai tentando di accedere.
INVALID_ARGUMENT (HTTP 400)
Uno o più argomenti passati nella richiesta non sono validi.
- Causa: questo può accadere per vari motivi, ad esempio se fornisci un valore fuori intervallo (ad es. capacità massima), se manca un campo obbligatorio (ad es.
VehicleType) o se fornisci coordinate non valide per un punto di ritiro. - Correzione: esamina il messaggio di errore per il campo specifico non valido e assicurati che la richiesta sia conforme alla specifica dell'API.
FAILED_PRECONDITION (HTTP 400)
L'operazione è stata rifiutata perché il sistema non si trova in uno stato richiesto per l'esecuzione dell'operazione.
- Causa: le cause più comuni includono il tentativo di modificare una corsa
COMPLETEoCANCELEDin uno stato diverso o il tentativo di assegnare un'attivitàCLOSEDa un veicolo. - Correzione: assicurati che lo stato attuale dell'entità consenta l'operazione che stai tentando di eseguire. Controlla il messaggio di errore per individuare violazioni specifiche dello stato.
UNAVAILABLE (HTTP 503)
Il servizio non è disponibile.
- Causa: indica un problema temporaneo con il servizio Fleet Engine.
- Correzione: è possibile riprovare la richiesta in sicurezza con il backoff esponenziale.