cockroachdb / cockroachdb/cockroach

Sentry: pebble.go:1440: log.Dev.Fatal: local corruption detected: pebble: backing file 000048 error: file 000048 (type blob) unknown to the objstorage provider: file does not exist (1) attached stack ...

Open
#172,184 1 comment 0 reactions 0 assignees View on GitHub
A-storage branch-release-26.2 C-bug O-sentry T-storage X-blathers-triaged
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

This issue was auto filed by Sentry. It represents a crash or reported error on a live cluster with telemetry enabled.

Sentry Link: [https://cockroach-labs.sentry.io/issues/7588239357/?referrer=webhooks_plugin](https://cockroach-labs.sentry.io/issues/7588239357/?referrer=webhooks_plugin)

Panic Message:

```
pebble.go:1440: log.Dev.Fatal: local corruption detected: pebble: backing file 000048 error: file 000048 (type blob) unknown to the objstorage provider: file does not exist
(1) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/storage.(*Pebble).makeMetricEtcEventListener.func2
| pkg/storage/pebble.go:1440
| github.com/cockroachdb/pebble.TeeEventListener.func6
| external/com_github_cockroachdb_pebble/event.go:1283
| github.com/cockroachdb/pebble.(*DB).reportCorruption
| external/com_github_cockroachdb_pebble/event.go:1471
| github.com/cockroachdb/pebble.(*fileCacheHandle).findOrCreateBlob
| external/com_github_cockroachdb_pebble/file_cache.go:285
| github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties-range1
| external/com_github_cockroachdb_pebble/table_stats.go:319
| github.com/cockroachdb/pebble/internal/manifest.(*btree[...]).All.func1
| external/com_github_cockroachdb_pebble/internal/manifest/btree.go:792
| github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties
| external/com_github_cockroachdb_pebble/table_stats.go:308
| github.com/cockroachdb/pebble.(*DB).collectTableStats
| external/com_github_cockroachdb_pebble/table_stats.go:121
| runtime.goexit
| src/runtime/asm_arm64.s:1268
Wraps: (2) secondary error attachment
| pebble: backing file 000048 error: file 000048 (type blob) unknown to the objstorage provider: file does not exist
| (1) ×
| Wraps: (2) attached stack trace
| -- stack trace:
| | github.com/cockroachdb/pebble.NewFileCache.func1
| | external/com_github_cockroachdb_pebble/file_cache.go:499
| | [...repeated from below...]
| Wraps: (3) pebble: backing file 000048 error
| Wraps: (4) forced error mark
| | ×
| | github.com/cockroachdb/errors/withstack/*withstack.withStack::
| Wraps: (5) attached stack trace
| -- stack trace:
| | github.com/cockroachdb/pebble/objstorage/objstorageprovider.(*provider).Lookup
| | external/com_github_cockroachdb_pebble/objstorage/objstorageprovider/provider.go:480
| | github.com/cockroachdb/pebble/objstorage/objstorageprovider.(*provider).OpenForReading
| | external/com_github_cockroachdb_pebble/objstorage/objstorageprovider/provider.go:273
| | github.com/cockroachdb/pebble.(*fileCacheHandle).openFile
| | external/com_github_cockroachdb_pebble/file_cache.go:210
| | github.com/cockroachdb/pebble.NewFileCache.func1
| | external/com_github_cockroachdb_pebble/file_cache.go:497
| | github.com/cockroachdb/pebble/internal/genericcache.(*shard[...]).findOrCreateValue
| | external/com_github_cockroachdb_pebble/internal/genericcache/shard.go:234
| | github.com/cockroachdb/pebble/internal/genericcache.(*Cache[...]).FindOrCreate
| | external/com_github_cockroachdb_pebble/internal/genericcache/cache.go:92
| | github.com/cockroachdb/pebble.(*fileCacheHandle).findOrCreateBlob
| | external/com_github_cockroachdb_pebble/file_cache.go:283
| | github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties-range1
| | external/com_github_cockroachdb_pebble/table_stats.go:319
| | github.com/cockroachdb/pebble/internal/manifest.(*btree[...]).All.func1
| | external/com_github_cockroachdb_pebble/internal/manifest/btree.go:792
| | github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties
| | external/com_github_cockroachdb_pebble/table_stats.go:308
| | github.com/cockroachdb/pebble.(*DB).collectTableStats
| | external/com_github_cockroachdb_pebble/table_stats.go:121
| | runtime.goexit
| | src/runtime/asm_arm64.s:1268
| Wraps: (6) file 000048 (type blob) unknown to the objstorage provider
| Wraps: (7) file does not exist
| Error types: (1) *hintdetail.withHint (2) *withstack.withStack (3) *errutil.withPrefix (4) *markers.withMark (5) *withstack.withStack (6) *errutil.withPrefix (7) *errors.errorString
Wraps: (3) log.Dev.Fatal: local corruption detected: pebble: backing file 000048 error: file 000048 (type blob) unknown to the objstorage provider: file does not exist
| (1) ×
| Wraps: (2) attached stack trace
| -- stack trace:
| | github.com/cockroachdb/pebble.NewFileCache.func1
| | external/com_github_cockroachdb_pebble/file_cache.go:499
| | [...repeated from below...]
| Wraps: (3) pebble: backing file 000048 error
| Wraps: (4) forced error mark
| | ×
| | github.com/cockroachdb/errors/withstack/*withstack.withStack::
| Wraps: (5) attached stack trace
| -- stack trace:
| | github.com/cockroachdb/pebble/objstorage/objstorageprovider.(*provider).Lookup
| | external/com_github_cockroachdb_pebble/objstorage/objstorageprovider/provider.go:480
| | github.com/cockroachdb/pebble/objstorage/objstorageprovider.(*provider).OpenForReading
| | external/com_github_cockroachdb_pebble/objstorage/objstorageprovider/provider.go:273
| | github.com/cockroachdb/pebble.(*fileCacheHandle).openFile
| | external/com_github_cockroachdb_pebble/file_cache.go:210
| | github.com/cockroachdb/pebble.NewFileCache.func1
| | external/com_github_cockroachdb_pebble/file_cache.go:497
| | github.com/cockroachdb/pebble/internal/genericcache.(*shard[...]).findOrCreateValue
| | external/com_github_cockroachdb_pebble/internal/genericcache/shard.go:234
| | github.com/cockroachdb/pebble/internal/genericcache.(*Cache[...]).FindOrCreate
| | external/com_github_cockroachdb_pebble/internal/genericcache/cache.go:92
| | github.com/cockroachdb/pebble.(*fileCacheHandle).findOrCreateBlob
| | external/com_github_cockroachdb_pebble/file_cache.go:283
| | github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties-range1
| | external/com_github_cockroachdb_pebble/table_stats.go:319
| | github.com/cockroachdb/pebble/internal/manifest.(*btree[...]).All.func1
| | external/com_github_cockroachdb_pebble/internal/manifest/btree.go:792
| | github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties
| | external/com_github_cockroachdb_pebble/table_stats.go:308
| | github.com/cockroachdb/pebble.(*DB).collectTableStats
| | external/com_github_cockroachdb_pebble/table_stats.go:121
| | runtime.goexit
| | src/runtime/asm_arm64.s:1268
| Wraps: (6) file 000048 (type blob) unknown to the objstorage provider
| Wraps: (7) file does not exist
| Error types: (1) *hintdetail.withHint (2) *withstack.withStack (3) *errutil.withPrefix (4) *markers.withMark (5) *withstack.withStack (6) *errutil.withPrefix (7) *errors.errorString
Error types: (1) *withstack.withStack (2) *secondary.withSecondaryError (3) *errutil.leafError
-- report composition:
*errutil.leafError: log.Dev.Fatal: local corruption detected: pebble: backing file 000048 error: file 000048 (type blob) unknown to the objstorage provider: file does not exist
*secondary.withSecondaryError: details for github.com/cockroachdb/errors/withstack/*withstack.withStack:::
pebble.go:1440: *withstack.withStack (top exception)
```

Stacktrace (expand for inline code snippets):

[src/runtime/asm_arm64.s#L1267-L1269](src/runtime/asm_arm64.s#L1267-L1269)
[external/com_github_cockroachdb_pebble/table_stats.go#L120-L122](external/com_github_cockroachdb_pebble/table_stats.go#L120-L122)
[external/com_github_cockroachdb_pebble/table_stats.go#L307-L309](external/com_github_cockroachdb_pebble/table_stats.go#L307-L309)
[external/com_github_cockroachdb_pebble/internal/manifest/btree.go#L791-L793](external/com_github_cockroachdb_pebble/internal/manifest/btree.go#L791-L793)
[external/com_github_cockroachdb_pebble/table_stats.go#L318-L320](external/com_github_cockroachdb_pebble/table_stats.go#L318-L320)
[external/com_github_cockroachdb_pebble/file_cache.go#L284-L286](external/com_github_cockroachdb_pebble/file_cache.go#L284-L286)
[external/com_github_cockroachdb_pebble/event.go#L1470-L1472](external/com_github_cockroachdb_pebble/event.go#L1470-L1472)
[external/com_github_cockroachdb_pebble/event.go#L1282-L1284](external/com_github_cockroachdb_pebble/event.go#L1282-L1284)
[pkg/storage/pebble.go#L1439-L1441](pkg/storage/pebble.go#L1439-L1441)

```
src/runtime/asm_arm64.s in runtime.goexit at line 1268
external/com_github_cockroachdb_pebble/table_stats.go in github.com/cockroachdb/pebble.(*DB).collectTableStats at line 121
external/com_github_cockroachdb_pebble/table_stats.go in github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties at line 308
external/com_github_cockroachdb_pebble/internal/manifest/btree.go in github.com/cockroachdb/pebble/internal/manifest.(*btree[...]).All.func1 at line 792
external/com_github_cockroachdb_pebble/table_stats.go in github.com/cockroachdb/pebble.(*DB).scanBlobFileProperties-range1 at line 319
external/com_github_cockroachdb_pebble/file_cache.go in github.com/cockroachdb/pebble.(*fileCacheHandle).findOrCreateBlob at line 285
external/com_github_cockroachdb_pebble/event.go in github.com/cockroachdb/pebble.(*DB).reportCorruption at line 1471
external/com_github_cockroachdb_pebble/event.go in github.com/cockroachdb/pebble.TeeEventListener.func6 at line 1283
pkg/storage/pebble.go in pkg/storage.(*Pebble).makeMetricEtcEventListener.func2 at line 1440
```

### Tags

| Tag | Value |
| --- | --- |
| Command | start-single-node |
| Environment | v26.2.3 |
| Go Version | go1.25.5 |
| Platform | linux arm64 |
| Distribution | CCL |
| Cockroach Release | v26.2.3 |
| Cockroach SHA | 90d3b6080727dc810224a99903cb2e88b81e91ae |
| # of CPUs | 13 |
| # of Goroutines | 71 |

Jira issue: CRDB-65342

Contributor guide

Open the contributing guide

Research direction

Start at pkg/storage/pebble.go:1440 and follow the reported Pebble paths through table_stats.go, file_cache.go, and objstorageprovider/provider.go. Use the start-single-node command and v26.2.3 Linux arm64 context to investigate the missing blob file; done means the corruption cause is identified and the reported fatal error is addressed with verification.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.