{"record":{"id":"5dcc9b50b4926b5d","repo":"thanos-io/thanos","slug":"not-supported-marker-v-5dcc9b","errorCode":null,"errorMessage":"not supported marker %v","messagePattern":"not supported marker (.+?)","errorType":"http","errorClass":"ApiError","httpStatus":400,"severity":"error","filePath":"pkg/api/blocks/v1.go","lineNumber":130,"sourceCode":"\tid, err := ulid.Parse(idParam)\n\tif err != nil {\n\t\treturn nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: errors.Errorf(\"ULID %q is not valid: %v\", idParam, err)}, func() {}\n\t}\n\n\tactionType := parse(actionParam)\n\tswitch actionType {\n\tcase Deletion:\n\t\terr := block.MarkForDeletion(r.Context(), bapi.logger, bapi.bkt, id, detailParam, promauto.With(nil).NewCounter(prometheus.CounterOpts{}))\n\t\tif err != nil {\n\t\t\treturn nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}\n\t\t}\n\tcase NoCompaction:\n\t\terr := block.MarkForNoCompact(r.Context(), bapi.logger, bapi.bkt, id, metadata.ManualNoCompactReason, detailParam, promauto.With(nil).NewCounter(prometheus.CounterOpts{}))\n\t\tif err != nil {\n\t\t\treturn nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}, func() {}\n\t\t}\n\tdefault:\n\t\treturn nil, nil, &api.ApiError{Typ: api.ErrorBadData, Err: errors.Errorf(\"not supported marker %v\", actionParam)}, func() {}\n\t}\n\treturn nil, nil, nil, func() {}\n}\n\nfunc (bapi *BlocksAPI) blocks(r *http.Request) (any, []error, *api.ApiError, func()) {\n\tviewParam := r.URL.Query().Get(\"view\")\n\tif viewParam == \"loaded\" {\n\t\tbapi.loadedLock.Lock()\n\t\tdefer bapi.loadedLock.Unlock()\n\n\t\treturn bapi.loadedBlocksInfo, nil, nil, func() {}\n\t}\n\n\tbapi.globalLock.Lock()\n\tdefer bapi.globalLock.Unlock()\n\n\treturn bapi.globalBlocksInfo, nil, nil, func() {}\n}","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/pkg/api/blocks/v1.go#L112-L148","documentation":"markBlock parses the 'action' URL parameter into one of Deletion, NoCompaction or NooCompaction markers; anything else hits the default branch and is rejected as ErrorBadData. The message echoes the unsupported action string verbatim.","triggerScenarios":"Calling the block mark endpoint with an action value other than the supported set (e.g. 'delete', 'nocompact', 'remove', uppercase variants, or a typo like 'no-compaction').","commonSituations":"Following outdated documentation or blog posts that used different action names; building automation against an assumed API surface; casing mistakes since the switch is exact-match.","solutions":["Use one of the exact supported action values (e.g. 'delete' for Deletion, 'no-compact' for NoCompaction) as defined by parse() in pkg/api/blocks/v1.go","Check the API reference for the Thanos version you run — supported markers have changed over releases","Fix casing/typos in the action path segment","Version-pin clients/scripts to the API version they were written for"],"exampleFix":"// before\ncurl -X POST host/api/v1/blocks/01ARZ3NDEKTSV4RRFFQ69G5FAV/nocompact\n// after\ncurl -X POST host/api/v1/blocks/01ARZ3NDEKTSV4RRFFQ69G5FAV/no-compact","handlingStrategy":"validation","validationCode":"const SUPPORTED_ACTIONS = new Set(['delete', 'no-compact']); // check parse() in pkg/api/blocks/v1.go\nif (!SUPPORTED_ACTIONS.has(action)) throw new Error(`unsupported marker: ${action}`);","typeGuard":"function isSupportedAction(a) { return ['delete','no-compact'].includes(a); }","tryCatchPattern":"try {\n  const res = await api.markBlock(id, action);\n} catch (e) {\n  if (/not supported marker/.test(e.message)) { /* map action to a supported value and retry once */ }\n  throw e;\n}","preventionTips":["Keep an enum of supported actions per Thanos version","Never free-text action values; use constants","Read the API docs for the deployed release before scripting","Unit-test URL builders against the action enum"],"tags":["http-api","invalid-argument","thanos"],"backgroundTag":"invalid-enum-value","analyzedSha":"35b8b991177def87ed52dcf10f9b6d87f07282c8","analyzedAt":"2026-09-07T01:49:59.689Z","contentChangedAt":"2026-09-07T01:49:59.689Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}