Auf dieser Seite werden Spanner-Fehlercodes und empfohlene Maßnahmen zur Fehlerbehandlung beschrieben. Google APIs, einschließlich Spanner, verwenden die von google.rpc.Code
definierten kanonischen Fehlercodes.
Wenn eine Spanner-Anfrage erfolgreich ist, gibt die API einen HTTP-Statuscode 200 OK
zusammen mit den angeforderten Daten im Text der Antwort zurück.
Wenn eine Anfrage fehlschlägt, gibt die Spanner API einen HTTP-Statuscode 4xx
oder 5xx
zurück, der den Fehler allgemein identifiziert, sowie eine Antwort, die Informationen zu den Fehlerursachen enthält.
Das Antwortobjekt enthält ein einzelnes Feld error
, dessen Wert die folgenden Elemente umfasst:
Element | Beschreibung |
---|---|
code |
Ein HTTP-Statuscode, der den Anfragefehler allgemein identifiziert. |
message |
Spezifische Informationen zum Anfragefehler. |
status |
Die kanonischen Fehlercode (google.rpc.Code ) für Google APIs. Die Codes, die von der Spanner API zurückgegeben werden können, werden unter Fehlercodes aufgeführt. |
Wenn eine Anfrage mit dem Inhaltstyp application/x-protobuf
zu einem Fehler führt, wird als Nutzlast die serialisierte Meldung google.rpc.Status
zurückgegeben.
Fehlercodes
Es wird empfohlen, Fehler durch Prüfung des Werts des kanonischen Fehlercodes (google.rpc.Code
) zu klassifizieren. Bei JSON-Fehlern wird dieser Code im Feld status
angezeigt. Bei Fehlern vom Typ application/x-protobuf
wird er im Feld code
angezeigt.
Fehlercode | Beschreibung | Empfohlene Maßnahmen |
---|---|---|
ABORTED |
Der Vorgang wurde abgebrochen, in der Regel aufgrund eines Parallelitätsproblems wie einer fehlgeschlagenen Sequencer-Überprüfung oder einer abgebrochenen Transaktion. Gibt an, dass ein Konflikt mit einer anderen Anfrage bestand. | Bei einem nicht transaktionalen Commit: Wiederholen Sie die Anfrage oder strukturieren Sie Ihre Entitäten, um Konflikte zu reduzieren. Bei Anfragen, die Teil eines transaktionalen Commits sind: Wiederholen Sie die gesamte Transaktion oder strukturieren Sie Ihre Entitäten, um Konflikte zu reduzieren. |
ALREADY_EXISTS |
Die Entität, die ein Client erstellen wollte, existiert bereits (z. B. Einfügen einer Zeile mit einem vorhandenen Primärschlüssel). | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
CANCELLED |
Der Vorgang wurde abgebrochen, üblicherweise vom Aufrufer. | Wiederholen Sie den Vorgang. |
DEADLINE_EXCEEDED |
Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. | Prüfen Sie, ob die Frist ausreicht. Verwenden Sie einen Termin, der der tatsächlichen Zeit entspricht, zu der eine Antwort nützlich ist. Bei Vorgängen, die den Systemstatus verändern, kann ein Fehler zurückgegeben werden, auch wenn der Vorgang erfolgreich abgeschlossen wurde. Tipps finden Sie unter Fehlerbehebung bei Fristüberschreitungen. |
FAILED_PRECONDITION |
Der Vorgang wurde abgelehnt, weil eine Vorbedingung für die Anfrage nicht erfüllt war. Das Nachrichtenfeld der Fehlerantwort enthält Informationen zu der nicht erfüllten Vorbedingung. Das kann beispielsweise beim Lesen oder Abfragen von Daten mit einem Zeitstempel geschehen, der die maximale Zeitstempelveralterung überschreitet. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
INTERNAL |
Der Server hat einen Fehler zurückgegeben. Einige Invarianten, die vom zugrunde liegenden System erwartet werden, sind fehlerhaft. | Wiederholen Sie den Vorgang nur, wenn Sie die genauen Umstände und die Ursache des Fehlers kennen. |
INVALID_ARGUMENT |
Der Client hat einen ungültigen Wert angegeben. Im Nachrichtenfeld der Fehlerantwort ist angegeben, welcher Wert ungültig war. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
NOT_FOUND |
Gibt an, dass eine angeforderte Entität, z. B. eine zu aktualisierende Entität oder eine zu befragende Tabelle oder Spalte, nicht vorhanden ist. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
OUT_OF_RANGE |
Beim Vorgang wurde versucht, den gültigen Bereich zu überschreiten. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
PERMISSION_DENIED |
Der Nutzer war zu dieser Anfrage nicht berechtigt. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
RESOURCE_EXHAUSTED |
Eine Ressource ist erschöpft. In der Administratorebene ist es möglich, dass das Projekt sein Kontingent überschritten hat oder der Speicherplatz für das gesamte Dateisystem aufgebraucht ist. In der Datenebene kann dies passieren, wenn Ihre Spanner-Knoten überlastet sind. |
Prüfen Sie für die Administratorebene, ob Sie Ihr Spanner- oder Projektkontingent nicht überschritten haben. Wenn Sie ein Kontingent überschritten haben, beantragen Sie eine Kontingenterhöhung oder warten Sie, bis das Kontingent zurückgesetzt wurde, bevor Sie es noch einmal versuchen. Konfigurieren Sie die Wiederholungen so, dass ein exponentielles Backoff verwendet wird. Prüfen Sie für die Datenebene, ob Ihre Spanner-Knoten ihre Kapazität nicht überschritten haben. Spanner wiederholt diese Fehler in der Clientbibliothek. Wenn alle Wiederholungen fehlschlagen, lesen Sie den Hilfeartikel Fehler des Ablaufsteuerungsmechanismus. Wenn in Ihrer Anwendung RESOURCE_EXHAUSTED -Fehler auftreten, behandeln Sie die Situation wie einen UNAVAILABLE -Fehler und wiederholen Sie den Vorgang mit exponentiellem Backoff. |
UNAUTHENTICATED |
Die Anfrage enthält keine gültigen Authentifizierungsdaten für diesen Vorgang. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
UNAVAILABLE |
Der Server ist nicht verfügbar. | Wiederholen Sie den Vorgang mit exponentiellem Backoff. Es ist nicht immer sicher, nicht idempotente Vorgänge zu wiederholen. |
UNIMPLEMENTED |
Dieser Vorgang ist nicht implementiert oder wird bei diesem Dienst nicht unterstützt bzw. ist bei diesem Dienst nicht aktiviert. | Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist. |
UNKNOWN |
Der Server hat einen unbekannten Fehler zurückgegeben. Auch Fehler, die von APIs ausgelöst werden, die nicht genügend Fehlerinformationen liefern, können in diesen Fehler umgewandelt werden. | Prüfen Sie, ob Ihre Anfrage sicher ist. Wiederholen Sie den Vorgang dann mit exponentiellem Backoff. |
Fehler beim Ablaufsteuerungsmechanismus
Unter den folgenden Bedingungen kann Spanner seinen Ablaufsteuerungsmechanismus aktivieren, um sich vor Überlastung zu schützen:
- Die CPU-Auslastung des Spanner-Knotens ist hoch. Wenn Sie vermuten, dass Ihre Anfrage zu einer hohen CPU-Auslastung führt, können Sie das Problem mithilfe der Messwerte zur CPU-Auslastung untersuchen.
- Es kann Hotspots geben, die die Verarbeitungszeit der Anfrage verlängern. Wenn Sie vermuten, dass Ihre Anfrage Hotspots verursacht, lesen Sie den Hilfeartikel Hotspots in Ihrer Datenbank finden, um das Problem zu untersuchen. Weitere Informationen finden Sie unter Schlüsselvisualisierung.
Der Ablaufsteuerungsmechanismus wird von den folgenden Clientbibliotheken unterstützt:
Die Gesamtzeit für die Ausführung der Anfrage verlängert sich durch die Verwendung des Flusssteuerungsmechanismus nicht. Ohne diesen Mechanismus wartet Spanner, bevor die Anfrage verarbeitet wird, und gibt schließlich einen DEADLINE_EXCEEDED
-Fehler zurück.
Wenn der Ablaufsteuerungsmechanismus aktiv ist, sendet Spanner Anfragen zur Wiederholung an den Client zurück. Wenn der Neuversuch die gesamte vom Nutzer angegebene Frist in Anspruch nimmt, erhält der Client den Fehler RESOURCE_EXHAUSTED
.
Dieser Fehler wird zurückgegeben, wenn Spanner die Verarbeitungszeit der Anfrage als zu lang einschätzt. Der Fehler überträgt die Ablaufsteuerung und Spanner versucht, die Anfrage noch einmal an den Client zu senden, anstatt interne Wiederholungen zu sammeln. So kann Spanner zusätzlichen Ressourcenverbrauch vermeiden.