Ralat Google Cloud Spanner: Kumpulan sesi tidak sah

王林
Lepaskan: 2024-02-08 22:36:09
ke hadapan
808 orang telah melayarinya

Google Cloud Spanner 错误:会话池无效

editor php Strawberry membawakan anda penyelesaian kepada ralat Google Cloud Spanner. Apabila menggunakan Google Cloud Spanner, kadangkala anda menghadapi ralat "Kolam sesi tidak sah". Ralat ini biasanya disebabkan oleh konfigurasi kolam sambungan yang salah atau melebihi had. Dalam artikel ini, kami akan memperincikan cara mengenal pasti dan menyelesaikan isu ini supaya aplikasi anda berjaya menggunakan perkhidmatan Google Cloud Spanner.

Kandungan soalan

Saya mempunyai kod Go berikut menggunakan pustaka Spanner:

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
}
...
}
Salin selepas log masuk

Ini menghasilkan log ralat berikut:

2023/11/30 22:40:03 ERROR failed to get the DATA from spanner id=4 error="spanner: code = \"InvalidArgument\", desc = \"invalid session pool\""
Salin selepas log masuk

Saya tidak percaya pelayan dapat mengakses pangkalan data yang ditentukan oleh Google Cloud Spanner, tetapi saya tidak mendapat ralat penciptaan klien Spanner. Bagaimana untuk membetulkan ralat kumpulan sesi tidak sah ini? invalid session pool 错误?

解决方法

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

Penyelesaian🎜🎜Anda menutup klien di dalam createClient sebelum kembali. Alih keluar defer dataClient.Close() dan ia akan berfungsi seperti yang anda jangkakan. 🎜
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
}
Salin selepas log masuk

Atas ialah kandungan terperinci Ralat Google Cloud Spanner: Kumpulan sesi tidak sah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!