{"record":{"id":"a88db506ed8e2aea","repo":"benbjohnson/litestream","slug":"poll-l1-w","errorCode":null,"errorMessage":"poll L1: %w","messagePattern":"poll L1: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"vfs.go","lineNumber":2630,"sourceCode":"\t\treplaceIndex = true\n\t\tbaseCommit = commit0\n\t\tnewCommit = commit0\n\t\tcombined = idx0\n\t} else {\n\t\tif len(idx0) > 0 {\n\t\t\tbaseCommit = commit0\n\t\t}\n\t\tfor k, v := range idx0 {\n\t\t\tcombined[k] = v\n\t\t}\n\t\tif commit0 > newCommit {\n\t\t\tnewCommit = commit0\n\t\t}\n\t}\n\n\tmaxTXID1, idx1, commit1, replace1, err := f.pollLevel(ctx, 1, maxTXID1Snapshot, baseCommit)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"poll L1: %w\", err)\n\t}\n\tif replace1 {\n\t\treplaceIndex = true\n\t\tbaseCommit = commit1\n\t\tnewCommit = commit1\n\t\tcombined = idx1\n\t} else {\n\t\tfor k, v := range idx1 {\n\t\t\tcombined[k] = v\n\t\t}\n\t\tif commit1 > newCommit {\n\t\t\tnewCommit = commit1\n\t\t}\n\t}\n\n\t// Send updates to a pending list if there are active readers.\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()","sourceCodeStart":2612,"sourceCodeEnd":2648,"githubUrl":"https://github.com/benbjohnson/litestream/blob/4ed7a308f6271ebfd2b0a6e4b70b03011a37e4a3/vfs.go#L2612-L2648","documentation":"The VFS poll loop failed to fetch level-1 LTX files (pollLevel for compaction level 1) while merging level-0 and level-1 indexes. The replica listing errored — connectivity or credentials — so the read-only view cannot be advanced.","triggerScenarios":"Background poll of L1 compaction files; client.LTXFiles(ctx, 1, ...) fails from storage errors, permission problems, or transient network conditions.","commonSituations":"Compaction-level prefixes misconfigured or deleted in object storage; IAM policies granting access to L0 but not L1 prefixes; storage outages.","solutions":["Inspect the wrapped cause for the storage error detail","Verify the replica storage contains intact L1 prefixes and the client has access","Confirm object storage lifecycle rules are not deleting L1 files prematurely","Restart polling after transient failures; run `litestream reset` if local index state is inconsistent"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"iter, err := client.LTXFiles(ctx, 1, 1, false)\nif err != nil {\n    return fmt.Errorf(\"L1 storage unavailable: %w\", err)\n}\niter.Close()","typeGuard":null,"tryCatchPattern":"if err := pollOnce(ctx); err != nil {\n    if isRetryablePageError(err) { time.Sleep(backoff); return pollOnce(ctx) }\n    return err\n}","preventionTips":["Ensure IAM/storage policies cover all compaction level prefixes","Do not delete L1 files with lifecycle rules while litestream is running"],"tags":["storage","replication","polling"],"backgroundTag":"network-request-failed","analyzedSha":"4ed7a308f6271ebfd2b0a6e4b70b03011a37e4a3","analyzedAt":"2026-09-06T18:29:25.564Z","contentChangedAt":"2026-09-06T18:29:25.564Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}