Häufige Probleme beheben

In den folgenden Abschnitten finden Sie Hilfe, falls Probleme auftreten.

Verlorener Status in Fleet Engine

Wenn Sie mit Fleet Engine arbeiten, sollten Sie Ihre Implementierung so gestalten, dass Fehler antizipiert werden. Wenn Sie beispielsweise eine Anfrage an die Fleet Engine senden, um ein Fahrzeug zu aktualisieren, erhalten Sie möglicherweise eine Fehlermeldung, dass das Fahrzeug nicht existiert. In Ihrer Implementierung sollte das Fahrzeug dann im neuen Status neu erstellt werden.

Im extrem unwahrscheinlichen Fall eines katastrophalen Ausfalls der 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 fehlschlagen, da Kontingentprüfungen durchgeführt werden, um Denial-of-Service-Angriffe (DOS) zu vermeiden. In diesem Fall sollten Sie die Neuerstellungsrate mithilfe einer Backoff-Strategie für Wiederholungsversuche verlangsamen.

Wiederholungsversuche

Achten Sie darauf, dass Ihr System Wiederholungsversuche für Anfragen an die Fleet Engine implementiert, da diese gelegentlich fehlschlagen können. Fleet Engine-Clientbibliotheken führen standardmäßig Wiederholungsversuche durch.

Verlorener Zustand in der Fahrer-App

Wenn die Fahrer-App abstürzt, muss sie 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 Haltestellen für das Driver SDK neu erstellen und explizit festlegen.

Hinweis: Diese Wiederherstellungen müssen autonom erfolgen, ohne dass Informationen von Fleet Engine verwendet werden, mit Ausnahme von Fehlern, die angeben, ob und wann eine Entität bereits in der Datenbank vorhanden ist. Wenn eine Entität bereits vorhanden ist, kann dieser Fehler abgefangen und die Entität anhand ihrer ID aktualisiert werden.

Fehler durch Fristüberschreitung

Wenn Sie beim Aufrufen der Fleet Engine den Fehler DEADLINE_EXCEEDED erhalten, hat die Anfrage länger als das konfigurierte Zeitlimit gedauert. Die 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 Fleet Engine-Java-Clientbibliothek verwenden, können Sie die RPC-Wiederholungseinstellungen anpassen, um die Frist zu konfigurieren. Das folgende Beispiel zeigt, wie Sie ein benutzerdefiniertes Zeitlimit beim Einrichten des VehicleService konfigurieren:

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, ihre Ursachen und ihre Behebung aufgeführt.

NOT_FOUND (HTTP 404)

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

  • Ursache: Wird normalerweise durch den Versuch verursacht, 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 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 bereits verwendeten ID verursacht.
  • 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 abzuschließen.

  • Ursache: Dies tritt in der Regel auf, wenn in Ihrem JSON Web Token (JWT) die richtigen Anforderungen 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 achten Sie darauf, dass Ihre JWT-Anforderungen die richtigen Bereiche für die Entität enthalten, auf die Sie zugreifen möchten.

INVALID_ARGUMENT (HTTP 400)

Mindestens eines der in der Anfrage übergebenen Argumente ist ungültig.

  • Ursache: Dies kann verschiedene Gründe haben, z. B. die Angabe eines Werts außerhalb des zulässigen Bereichs (z. B. maximale Kapazität), ein fehlendes Pflichtfeld (z. B. VehicleType) oder die Angabe ungültiger Koordinaten für einen Abholpunkt.
  • Abhilfe: Prüfen Sie die Fehlermeldung für das ungültige Feld und achten Sie darauf, dass Ihre Anfrage der API-Spezifikation entspricht.

FAILED_PRECONDITION (HTTP 400)

Der Vorgang wurde abgelehnt, weil sich das System nicht in einem für die Ausführung des Vorgangs erforderlichen Zustand befindet.

  • Ursache: Häufige Ursachen sind der Versuch, eine COMPLETE- oder CANCELED-Fahrt in einen anderen Status zu ändern, oder der Versuch, einem Fahrzeug eine CLOSED-Aufgabe zuzuweisen.
  • Abhilfe: Prüfen Sie, ob der aktuelle Status der Entität den versuchten Vorgang zulässt. Prüfen Sie die Fehlermeldung auf bestimmte Statusverstöße.

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 mit exponentiellem Backoff wiederholt werden.