Häufige Probleme beheben

In den folgenden Abschnitten finden Sie Hilfe bei Problemen.

Verlorener Status in Fleet Engine

Wenn Sie mit Fleet Engine arbeiten, sollten Sie Ihre Implementierung so gestalten, dass Fehler berücksichtigt werden. Wenn Sie beispielsweise eine Anfrage an Fleet Engine senden, um ein Fahrzeug zu aktualisieren, kann es mit einem Fehler antworten, der angibt, dass das Fahrzeug nicht vorhanden ist. Ihre Implementierung sollte das Fahrzeug dann im neuen Status neu erstellen.

Im äußerst unwahrscheinlichen Fall eines katastrophalen Fehlers von Fleet Engine müssen Sie möglicherweise die meisten oder alle Fahrzeuge und Aufgaben neu erstellen. Wenn die Erstellungsrate zu hoch wird, können einige Anfragen aufgrund von Kontingentproblemen wieder fehlschlagen, da Kontingentprüfungen vorhanden sind, um Denial-of-Service-Angriffe (DoS) zu vermeiden. Verlangsamen Sie in diesem Fall die Erstellungsrate mit einer Backoff-Strategie für Wiederholungsversuche.

Neuversuche

Ihr System muss Wiederholungsversuche für Anfragen an Fleet Engine implementieren, da diese gelegentlich fehlschlagen können. Fleet Engine-Clientbibliotheken führen standardmäßig Wiederholungsversuche aus.

Verlorener Status in der Fahrer-App

Wenn die Fahrer-App abstürzt, muss die App den aktuellen Status im Driver SDK neu erstellen. Die App sollte versuchen, Aufgaben neu zu erstellen, um sicherzustellen, dass sie vorhanden sind, und um ihren aktuellen Status wiederherzustellen. Die App sollte auch die Liste der Haltepunkte für das Driver SDK neu erstellen und explizit festlegen.

Hinweis: Diese Wiederherstellungen müssen autonom erfolgen, ohne auf Informationen von Fleet Engine angewiesen zu sein. Ausgenommen sind Fehler, die angeben, ob und wann eine Entität bereits in der Datenbank vorhanden ist. Wenn eine Entität bereits vorhanden ist, kann dieser Fehler ignoriert und die Entität mit ihrer ID aktualisiert werden.

Fehler wegen überschrittener Frist

Wenn Sie beim Aufrufen von Fleet Engine einen DEADLINE_EXCEEDED-Fehler erhalten, hat die Anfrage länger als das konfigurierte Zeitlimit gedauert. Fleet Engine-Clientbibliotheken haben Standardzeitlimits, die Sie jedoch möglicherweise anpassen müssen.

Allgemeine Informationen zu gRPC-Fristen finden Sie unter gRPC und Fristen.

Wenn Sie die Frist bei Verwendung der Fleet Engine-Java-Clientbibliothek konfigurieren möchten, können Sie die Einstellungen für RPC-Wiederholungsversuche anpassen. Im folgenden Beispiel wird gezeigt, wie Sie ein benutzerdefiniertes Zeitlimit konfigurieren, wenn Sie VehicleService einrichten:

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());

Häufige API-Fehler

In diesem Abschnitt werden häufige API-Fehler aufgeführt, die auftreten können, sowie ihre Ursachen und Lösungen.

NOT_FOUND (HTTP 404)

Die angeforderte Entität (z. B. ein Fahrzeug, eine Fahrt oder eine Aufgabe) konnte nicht gefunden werden.

  • Ursache: Wird in der Regel dadurch verursacht, dass versucht wird, eine Entität mit einer ID abzurufen, zu aktualisieren oder zu löschen, die nicht in der Datenbank vorhanden ist.
  • Abhilfe: Prüfen Sie, ob die Entitäts-ID korrekt ist und ob die Entität erfolgreich erstellt wurde, bevor Sie versuchen, darauf zuzugreifen.

ALREADY_EXISTS (HTTP 409)

Die Entität, die Sie erstellen möchten, ist bereits vorhanden.

  • Ursache: Wird durch den Aufruf einer Erstellungsmethode (z. B. CreateVehicle oder CreateTrip) mit einer ID verursacht, die bereits verwendet wird.
  • Abhilfe: Aktualisieren Sie stattdessen die vorhandene Entität oder verwenden Sie eine neue eindeutige ID für die Erstellungsanfrage.

PERMISSION_DENIED (HTTP 403)

Sie haben nicht die erforderlichen Berechtigungen, um die Anfrage auszuführen.

  • Ursache: Dies tritt in der Regel auf, wenn in Ihrem JSON Web Token (JWT) die richtigen Ansprüche fehlen oder wenn dem Dienstkonto, das das JWT signiert, die erforderlichen IAM-Rollen fehlen. Beispiel: „JWT enthält keinen übereinstimmenden Bereich für die angeforderte Fahrt.“
  • Abhilfe: Prüfen Sie die Berechtigungen Ihres Dienstkontos und stellen Sie sicher, dass Ihre JWT Ansprüche die richtigen Bereiche für die Entität enthalten, auf die Sie zugreifen möchten.

INVALID_ARGUMENT (HTTP 400)

Eines oder mehrere der in der Anfrage übergebenen Argumente sind ungültig.

  • Ursache: Dies kann verschiedene Ursachen haben, z. B. wenn ein Wert außerhalb des gültigen Bereichs angegeben wird (z. B. maximale Kapazität), ein Pflichtfeld fehlt (z. B. ein VehicleType) oder ungültige Koordinaten für einen Abholort angegeben werden.
  • Abhilfe: Prüfen Sie die Fehlermeldung für das ungültige Feld und stellen Sie sicher, dass Ihre Anfrage der API-Spezifikation entspricht.

FAILED_PRECONDITION (HTTP 400)

Der Vorgang wurde abgelehnt, weil der Systemzustand nicht für die Ausführung des Vorgangs geeignet ist.

  • Ursache: Häufige Ursachen sind der Versuch, den Status einer COMPLETE oder CANCELED-Fahrt zu ändern, oder der Versuch, einer CLOSED-Aufgabe einem Fahrzeug zuzuweisen.
  • Abhilfe: Stellen Sie sicher, dass der aktuelle Status der Entität den gewünschten Vorgang zulässt. In der Fehlermeldung finden Sie Informationen zu bestimmten Statusverletzungen.

UNAVAILABLE (HTTP 503)

Der Dienst ist nicht verfügbar.

  • Ursache: Dies deutet auf ein vorübergehendes Problem mit dem Fleet Engine-Dienst hin.
  • Abhilfe: Die Anfrage kann sicher mit exponentiellem Backoff wiederholt werden.