Heim > Backend-Entwicklung > Golang > Google Cloud Spanner-Fehler: Ungültiger Sitzungspool

Google Cloud Spanner-Fehler: Ungültiger Sitzungspool

王林
Freigeben: 2024-02-08 22:36:09
nach vorne
885 Leute haben es durchsucht

Der

Google Cloud Spanner 错误:会话池无效

php-Editor Strawberry bietet Ihnen eine Lösung für den Google Cloud Spanner-Fehler. Bei der Verwendung von Google Cloud Spanner tritt manchmal der Fehler „Ungültiger Sitzungspool“ auf. Dieser Fehler wird normalerweise durch eine falsche Konfiguration des Verbindungspools oder eine Überschreitung des Grenzwerts verursacht. In diesem Artikel erfahren Sie, wie Sie dieses Problem identifizieren und beheben, damit Ihre Anwendung den Google Cloud Spanner-Dienst erfolgreich nutzen kann.

Frageninhalt

Ich habe den folgenden Go-Code, der die Spanner-Bibliothek verwendet:

package main

import (
    "log/slog"
    "log"
    "fmt"
    "context"

    "cloud.google.com/go/spanner"
)


func createClient(ctx context.Context, db string) (*spanner.Client, error) {
    sessionPoolConfig := spanner.SessionPoolConfig{
        TrackSessionHandles: true,
        InactiveTransactionRemovalOptions: spanner.InactiveTransactionRemovalOptions{
            ActionOnInactiveTransaction: spanner.WarnAndClose,
        },
    }
    dataClient, err := spanner.NewClientWithConfig(
        ctx, db, spanner.ClientConfig{SessionPoolConfig: sessionPoolConfig},
    )
        if err != nil {
        slog.Error("failed to create the spanner client", "err", err)
                return nil, err
        }
        defer dataClient.Close()

        _ = dataClient

        return dataClient, nil
}

var dbLink = "projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME"

func main() {
    ctx := context.Background()

    snapperClient, err := createClient(ctx, dbLink)
    if err != nil {
        log.Fatalf("failed to create a spanner client, error=%s", err.Error())
}

    row, err := spannerClient.Single().ReadRow(ctx, "DATA_TABLE", spanner.Key{THE_KEY}, []string{"THE_COLUMN"})
    if err != nil {
        slog.Error("failed to get the DATA from spanner", "error", err.Error())
        return nil, err
}
...
}
Nach dem Login kopieren

Dies führt zu folgendem Fehlerprotokoll:

2023/11/30 22:40:03 ERROR failed to get the DATA from spanner id=4 error="spanner: code = \"InvalidArgument\", desc = \"invalid session pool\""
Nach dem Login kopieren

Ich glaube nicht, dass der Server auf die von Google Cloud Spanner angegebene Datenbank zugreifen kann, aber ich erhalte keinen Fehler bei der Erstellung des Spanner-Clients. Wie kann dieser Fehler durch einen ungültigen Sitzungspool behoben werden? invalid session pool 错误?

解决方法

您在返回之前关闭 createClient 内部的客户端。删除 defer dataClient.Close()

Workaround🎜🎜Sie schließen den Client in createClient, bevor Sie zurückkehren. Entfernen Sie defer dataClient.Close() und es sollte wie erwartet funktionieren. 🎜
func createClient(ctx context.Context, db string) (*spanner.Client, error) {
    sessionPoolConfig := spanner.SessionPoolConfig{
        TrackSessionHandles: true,
        InactiveTransactionRemovalOptions: spanner.InactiveTransactionRemovalOptions{
            ActionOnInactiveTransaction: spanner.WarnAndClose,
        },
    }
    dataClient, err := spanner.NewClientWithConfig(
        ctx, db, spanner.ClientConfig{SessionPoolConfig: sessionPoolConfig},
    )
    if err != nil {
        slog.Error("failed to create the spanner client", "err", err)
        return nil, err
    }
    // Remove this
    defer dataClient.Close()
    // Also this isn't doing anything
    _ = dataClient

    return dataClient, nil
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGoogle Cloud Spanner-Fehler: Ungültiger Sitzungspool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage