Consulta le sezioni seguenti per ricevere assistenza in caso di problemi.
Stato perso in Fleet Engine
Quando lavori con Fleet Engine, progetta la tua implementazione in modo da prevedere i guasti. 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. La tua implementazione deve quindi ricreare il veicolo nel nuovo stato.
Nello scenario estremamente improbabile di un guasto catastrofico di Fleet Engine, potrebbe essere necessario ricreare la maggior parte o tutti i veicoli e le attività. Se la velocità di creazione diventa troppo elevata, alcune richieste potrebbero non riuscire di nuovo a causa di problemi di quota, poiché sono in vigore controlli della quota per evitare attacchi Denial of Service (DoS). In questo caso, rallenta la velocità di ricreazione utilizzando una strategia di backoff per i nuovi tentativi.
Nuovi tentativi
Assicurati che il tuo sistema implementi nuovi tentativi per le richieste a Fleet Engine, poiché potrebbero non riuscire occasionalmente. Le librerie client di Fleet Engine eseguono nuovi tentativi per impostazione predefinita.
Stato perso nell'app per i conducenti
Se l'app per i conducenti si arresta in modo anomalo, deve ricreare lo stato attuale all'interno di Driver SDK. 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 esplicitamente l'elenco delle fermate per Driver SDK.
Nota: questi ripristini devono essere eseguiti autonomamente 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 superamento della scadenza
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 e scadenze.
Per configurare la scadenza quando utilizzi la libreria client Java di Fleet Engine, puoi modificare le impostazioni di 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 API comuni che potresti riscontrare, le relative cause e come risolverli.
NOT_FOUND (HTTP 404)
Non è stato possibile trovare l'entità richiesta (ad esempio un veicolo, un viaggio o un'attività).
- Causa: in genere è causato dal tentativo di ottenere, aggiornare o eliminare un'entità utilizzando un ID che non esiste nel database.
- Risoluzione: 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 (ad esempio
CreateVehicleoCreateTrip) con un ID già in uso. - Risoluzione: aggiorna l'entità esistente oppure 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 si verifica se nel token JWT (JSON Web Token) mancano le attestazioni corrette o se l'account di servizio che firma il JWT non dispone dei ruoli IAM richiesti. Ad esempio, "JWT does not contain a matching scope for requested trip."
- Risoluzione: controlla le autorizzazioni dell'account di servizio 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: può succedere per vari motivi, ad esempio se fornisci un
valore fuori intervallo (ad es. capacità massima), se manca un campo obbligatorio (ad es. un
VehicleType) o se fornisci coordinate non valide per un punto di ritiro. - Risoluzione: esamina il messaggio di errore per il campo specifico non valido e assicurati che la richiesta sia conforme alle specifiche 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 comuni includono il tentativo di modificare un viaggio
COMPLETEoCANCELEDin uno stato diverso o il tentativo di assegnare un'attivitàCLOSEDa un veicolo. - Risoluzione: assicurati che lo stato attuale dell'entità consenta l'operazione che stai tentando di eseguire. Controlla il messaggio di errore per le violazioni di stato specifiche.
UNAVAILABLE (HTTP 503)
Il servizio non è disponibile.
- Causa: indica un problema temporaneo con il servizio Fleet Engine.
- Risoluzione: è possibile ritentare la richiesta in modo sicuro con il backoff esponenziale.