{"record":{"id":"d63ad68b3c932dd5","repo":"chroma-core/chroma","slug":"indexing-status-is-not-implemented-for-segmentapi","errorCode":null,"errorMessage":"Indexing status is not implemented for SegmentAPI","messagePattern":"Indexing status is not implemented for SegmentAPI","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"chromadb/api/segment.py","lineNumber":473,"sourceCode":"        )\n\n    @override\n    def _fork_count(\n        self,\n        collection_id: UUID,\n        tenant: str = DEFAULT_TENANT,\n        database: str = DEFAULT_DATABASE,\n    ) -> int:\n        raise NotImplementedError(\"Fork count is not implemented for SegmentAPI\")\n\n    @override\n    def _get_indexing_status(\n        self,\n        collection_id: UUID,\n        tenant: str = DEFAULT_TENANT,\n        database: str = DEFAULT_DATABASE,\n    ) -> \"IndexingStatus\":\n        raise NotImplementedError(\"Indexing status is not implemented for SegmentAPI\")\n\n    @override\n    def _search(\n        self,\n        collection_id: UUID,\n        searches: List[Search],\n        tenant: str = DEFAULT_TENANT,\n        database: str = DEFAULT_DATABASE,\n        read_level: ReadLevel = ReadLevel.INDEX_AND_WAL,\n    ) -> SearchResult:\n        raise NotImplementedError(\"Search is not implemented for SegmentAPI\")\n\n    @trace_method(\"SegmentAPI.delete_collection\", OpenTelemetryGranularity.OPERATION)\n    @override\n    @rate_limit\n    def delete_collection(\n        self,\n        name: str,","sourceCodeStart":455,"sourceCodeEnd":491,"githubUrl":"https://github.com/chroma-core/chroma/blob/aecdd12c8a891610db8653630b066b32ceb678b5/chromadb/api/segment.py#L455-L491","documentation":"Chroma's embedded, in-process backend (SegmentAPI — used by chromadb.Client, EphemeralClient and PersistentClient) does not implement the indexing-status operation declared on the shared API base: _get_indexing_status unconditionally raises NotImplementedError. Indexing progress (indexed vs pending ops) only exists where a server-side indexer can lag behind writes; embedded mode writes records into local segments synchronously, so there is no status to report.","triggerScenarios":"Calling collection.get_indexing_status() (which delegates to client._get_indexing_status(collection_id, ...)) on any embedded client: chromadb.Client(), chromadb.EphemeralClient(), or chromadb.PersistentClient(path=...).","commonSituations":"Code written against a Chroma server (Docker) is reused in unit tests that swap in an embedded PersistentClient; CI replaces HttpClient with an in-process client for speed; progress reporting polls indexing status after bulk ingestion while running embedded.","solutions":["Connect with chromadb.HttpClient to a running Chroma server, which implements get_indexing_status","Feature-detect and degrade gracefully: wrap the call in try/except NotImplementedError and treat embedded mode as fully indexed","Check client.get_settings().chroma_api_impl equals 'chromadb.api.segment.SegmentAPI' and skip the call in that case"],"exampleFix":"// before\ncoll = chromadb.PersistentClient(path='./chroma').get_collection('docs')\nstatus = coll.get_indexing_status()  # NotImplementedError\n\n// after\ntry:\n    status = coll.get_indexing_status()\nexcept NotImplementedError:\n    status = None  # embedded mode: writes are synchronous, no indexing lag","handlingStrategy":"try-catch","validationCode":"import chromadb\n\ndef supports_indexing_status(client: chromadb.ClientAPI) -> bool:\n    impl = client.get_settings().chroma_api_impl\n    return impl not in ('chromadb.api.segment.SegmentAPI', 'chromadb.api.rust.RustBindingsAPI')","typeGuard":null,"tryCatchPattern":"try:\n    status = coll.get_indexing_status()\nexcept NotImplementedError:\n    status = None  # embedded backend: treat as fully indexed","preventionTips":["Centralize client creation so tests and production differ only by the client factory","Feature-detect newer APIs with try/except NotImplementedError the first time they run","Check the embedded-vs-server feature matrix before adopting a new API"],"tags":["chroma","segment-api","embedded","not-implemented","indexing-status"],"backgroundTag":"operation-not-supported-by-backend","analyzedSha":"aecdd12c8a891610db8653630b066b32ceb678b5","analyzedAt":"2026-08-16T21:53:27.228Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}