{"record":{"id":"93195d83eaa38d99","repo":"weaviate/weaviate","slug":"active-drop-check-w","errorCode":null,"errorMessage":"active-drop check: %w","messagePattern":"active-drop check: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"adapters/repos/db/drop_vector_index_provider.go","lineNumber":773,"sourceCode":"\t\treturn fmt.Errorf(\"coverage check: %w\", err)\n\t}\n\tif len(uncovered) > 0 {\n\t\t// Count + sample only: on a large MT collection the full list is a\n\t\t// multi-MB log line of tenant names.\n\t\tlogger.WithField(\"uncoveredCount\", len(uncovered)).\n\t\t\tWithField(\"sample\", uncovered[:min(len(uncovered), 10)]).\n\t\t\tInfo(\"drop-vector: task-completion: shards not covered by this task (inactive at enqueue or created since); \" +\n\t\t\t\t\"leaving schema marker — reconciliation re-enqueues once they are active\")\n\t\tp.nudgeReconcile()\n\t\treturn nil\n\t}\n\n\t// A replayed completion (LocalCallbacksDone=false) is epoch-blind: this task's\n\t// finalize must not remove the marker of a NEWER drop of the same name that is\n\t// still running — that would free the name while the newer op strips it.\n\tif blocked, err := p.activeOverlappingDrop(task, payload); err != nil {\n\t\t// Retry via the scheduler (see the delete-op failure above).\n\t\treturn fmt.Errorf(\"active-drop check: %w\", err)\n\t} else if blocked {\n\t\tlogger.Info(\"drop-vector: task-completion: a newer drop task on the same target is active; leaving its schema marker\")\n\t\treturn nil\n\t}\n\n\tif err := p.schema.RemoveDroppedVectorConfig(p.serverCtx, payload.Collection, payload.Targets); err != nil {\n\t\t// Retry via the scheduler (see the delete-op failure above). Acking a\n\t\t// failed finalize write is the worst case of the four: the FINISHED\n\t\t// record carries COMPLETE coverage, so every reconcile round would\n\t\t// re-read \"complete chain + standing marker\" as closed-epoch residue\n\t\t// and re-strip the whole collection, forever, while retained records\n\t\t// accumulate.\n\t\treturn fmt.Errorf(\"removing VectorConfig entries: %w\", err)\n\t}\n\tlogger.Info(\"drop-vector: task-completion: dropped vector(s) removed from schema\")\n\treturn nil\n}\n","sourceCodeStart":755,"sourceCodeEnd":791,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/adapters/repos/db/drop_vector_index_provider.go#L755-L791","documentation":"OnTaskCompleted wraps a failure of p.activeOverlappingDrop — the epoch/overlap check that determines whether a newer drop of the same collection is still running. If the check itself errors (schema query failure), finalize cannot safely decide whether to remove the schema marker, so the error is returned to let the scheduler retry the completion.","triggerScenarios":"Thrown at adapters/repos/db/drop_vector_index_provider.go:773 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rely on the scheduler retry: the completion callback will be replayed","Investigate the wrapped cause (schema/sharding state unavailability)","No manual action needed if transient — finalize is idempotent and deferred safely"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}