{"record":{"id":"68d2b5ed974b4f8a","repo":"JuliusBrussee/caveman","slug":"objectstore-page-size-must-be-positive","errorCode":null,"errorMessage":"objectstore: page size must be positive","messagePattern":"objectstore: page size must be positive","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shared/platform/objectstore/objectstore.go","lineNumber":75,"sourceCode":"type ObjectPage struct {\n\tKeys      []string\n\tNextToken string\n\tTruncated bool\n}\n\n// PagedLister is implemented by production backends and bounded test stores.\n// A retention sweep must use this interface rather than materializing an\n// unbounded Store.List result.\ntype PagedLister interface {\n\tListPage(ctx context.Context, prefix, startAfter string, maxKeys int) (ObjectPage, error)\n}\n\n// ListPage dispatches to a cursor-capable backend. It intentionally does not\n// fall back to Store.List: callers use it specifically to preserve a memory\n// bound when a tenant prefix is large.\nfunc ListPage(ctx context.Context, store Store, prefix, startAfter string, maxKeys int) (ObjectPage, error) {\n\tif maxKeys <= 0 {\n\t\treturn ObjectPage{}, fmt.Errorf(\"objectstore: page size must be positive\")\n\t}\n\tlister, ok := store.(PagedLister)\n\tif !ok {\n\t\treturn ObjectPage{}, ErrPagingUnsupported\n\t}\n\treturn lister.ListPage(ctx, prefix, startAfter, maxKeys)\n}\n\n// VersionPurger is implemented by version-aware backends. Explicit privacy\n// deletion uses it to remove current objects, noncurrent versions, and delete\n// markers immediately instead of waiting for lifecycle expiration.\ntype VersionPurger interface {\n\tDeleteAllVersions(ctx context.Context, key string) error\n\tDeletePrefixAllVersions(ctx context.Context, prefix string) error\n}\n\n// PurgeObject removes every version when supported, falling back to ordinary\n// deletion only for non-versioned test/self-hosted backends.","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/shared/platform/objectstore/objectstore.go#L57-L93","documentation":"Error \"objectstore: page size must be positive\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at shared/platform/objectstore/objectstore.go:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set a positive page size."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}