Closed
Description
I attempted to make a change in Pebble which cleared out the fileCacheHandle
on Close
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x1156aba]
goroutine 61812 [running]:
github.com/cockroachdb/pebble.(*fileCacheHandle).metrics(0xc00301eb40)
external/com_github_cockroachdb_pebble/file_cache.go:192 +0x1a
github.com/cockroachdb/pebble.(*DB).Metrics(0xc00baedb08)
external/com_github_cockroachdb_pebble/db.go:2051 +0xe2a
github.com/cockroachdb/cockroach/pkg/storage.(*Pebble).GetMetrics(_)
pkg/storage/pebble.go:1842 +0x65
github.com/cockroachdb/cockroach/pkg/server.(*nodePebbleMetricsProvider).GetPebbleMetrics.func1(0xc004b21808)
pkg/server/node.go:1391 +0x74
github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Stores).VisitStores.func1(0x8f6d150?, 0xc0061e6150?)
pkg/kv/kvserver/stores.go:146 +0x26
github.com/cockroachdb/cockroach/pkg/util/syncutil.(*Map[...]).Range(0x8bd1ce0?, 0xc00b223d38)
pkg/util/syncutil/map.go:391 +0x10d
github.com/cockroachdb/cockroach/pkg/kv/kvserver.(*Stores).VisitStores(0x49f46e?, 0x1b3e47d?)
pkg/kv/kvserver/stores.go:145 +0x55
github.com/cockroachdb/cockroach/pkg/server.(*nodePebbleMetricsProvider).GetPebbleMetrics(0xc00a41cf48)
pkg/server/node.go:1389 +0x1a8
github.com/cockroachdb/cockroach/pkg/util/admission.(*StoreGrantCoordinators).SetPebbleMetricsProvider.func1()
pkg/util/admission/grant_coordinator.go:120 +0x1bb
created by github.com/cockroachdb/cockroach/pkg/util/admission.(*StoreGrantCoordinators).SetPebbleMetricsProvider in goroutine 59280
pkg/util/admission/grant_coordinator.go:96 +0x389
The engine closer is registered here:
cockroach/pkg/server/server.go
Line 298 in cada6b4
The grant coordinator closer is here:
cockroach/pkg/server/server.go
Line 599 in cada6b4
There are two problems:
- closers don't run in reverse order (which seems wrong in general)
- the grant coordinator closer doesn't actually wait for the background loop to exit ( )
Jira issue: CRDB-47168