через некоторое время происходит сбой тестовой библиотеки golang spanner

Библиотека Spanner GO аварийно завершает работу через несколько минут, возможно, после этого запроса (хотя ранее это было успешно) Версия cloud.google.com/go/spanner v1.11.0

      2021/02/01 00:45:32.564971 spannertest.inmem: Querying: SELECT * FROM tenant_config WHERE commit_time > "2021-02-01T00:44:32Z"

Crashinfo

      panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xae3bcb]

goroutine 214 [running]:
cloud.google.com/go/spanner/spannertest.(*server).ExecuteSql(0xc00009b4a0, 0xf74c00, 0xc0001e8270, 0xc0003e8c60, 0xc00009b4a0, 0xc0001e8270, 0xc0008a4ba0)
        /Users/mpathak/Development/gopkgs/pkg/mod/cloud.google.com/go/spanner@v1.11.0/spannertest/inmem.go:491 +0x3b
google.golang.org/genproto/googleapis/spanner/v1._Spanner_ExecuteSql_Handler(0xd0f8a0, 0xc00009b4a0, 0xf74c00, 0xc0001e8270, 0xc00088b020, 0x0, 0xf74c00, 0xc0001e8270, 0xc0004f4060, 0x14)
        /Users/mpathak/Development/gopkgs/pkg/mod/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154/googleapis/spanner/v1/spanner.pb.go:3581 +0x217
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0003a1500, 0xf7e800, 0xc00018a900, 0xc00089a000, 0xc0001ac2a0, 0x152c7d8, 0x0, 0x0, 0x0)
        /Users/mpathak/Development/gopkgs/pkg/mod/google.golang.org/grpc@v1.32.0/server.go:1194 +0x50a
google.golang.org/grpc.(*Server).handleStream(0xc0003a1500, 0xf7e800, 0xc00018a900, 0xc00089a000, 0x0)
        /Users/mpathak/Development/gopkgs/pkg/mod/google.golang.org/grpc@v1.32.0/server.go:1517 +0xcfd
google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000606140, 0xc0003a1500, 0xf7e800, 0xc00018a900, 0xc00089a000)
        /Users/mpathak/Development/gopkgs/pkg/mod/google.golang.org/grpc@v1.32.0/server.go:859 +0xa1
created by google.golang.org/grpc.(*Server).serveStreams.func1
        /Users/mpathak/Development/gopkgs/pkg/mod/google.golang.org/grpc@v1.32.0/server.go:857 +0x204

1 ответ

Это, по-видимому, вызвано ошибкой в ExecuteSqlреализация метода spannertest. Пул сеансов клиента Spanner выполнит pingкаждые 50 минут, чтобы поддерживать сеансы на сервере. Эти SELECT 1операторы выполняются без транзакции, что означает, что серверная часть должна по умолчанию использовать одноразовую транзакцию только для чтения. Внутренний сервер spannertest предполагает, что клиент всегда будет указывать TransactionSelector: https://github.com/googleapis/google-cloud-go/blob/c7ecf0f3f454606b124e52d20af2545b2c68646f/spanner/spannertest/inmem.go#L491

Я открыл для него проблему здесь: https://github.com/googleapis/google-cloud-go/issues/3639 .

Другие вопросы по тегам