{"record":{"id":"8b8ded410f240cb1","repo":"chroma-core/chroma","slug":"indexing-status-is-not-implemented-for-local-chrom","errorCode":null,"errorMessage":"Indexing status is not implemented for Local Chroma","messagePattern":"Indexing status is not implemented for Local Chroma","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"chromadb/api/rust.py","lineNumber":382,"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 Local Chroma\")\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 Local Chroma\")\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 Local Chroma\")\n\n    @override\n    def _count(\n        self,\n        collection_id: UUID,\n        tenant: str = DEFAULT_TENANT,\n        database: str = DEFAULT_DATABASE,","sourceCodeStart":364,"sourceCodeEnd":400,"githubUrl":"https://github.com/chroma-core/chroma/blob/aecdd12c8a891610db8653630b066b32ceb678b5/chromadb/api/rust.py#L364-L400","documentation":"RustBindingsAPI._get_indexing_status (chromadb/api/rust.py:382) always raises NotImplementedError. Indexing status (how far a collection's vector index has caught up) is reported only by the Chroma server; the embedded Rust bindings do not expose it. Note that SegmentAPI (the default embedded backend) stubs the same method, so this is server-only across backends.","triggerScenarios":"client = chromadb.RustClient(...); client.get_collection('docs').get_indexing_status(). Any Collection.get_indexing_status() call in embedded (non-HttpClient) mode.","commonSituations":"Health-check or readiness-probe code that polls indexing status in a deployment that was switched from client-server to embedded; dashboards written against the server API being reused locally.","solutions":["Query indexing status through chromadb.HttpClient against a Chroma server, which implements it","In embedded mode, treat indexing as synchronous (local writes are applied in-process) and drop the status check","Wrap the call in a capability check or try/except NotImplementedError when the same code must run in both modes"],"exampleFix":"# before (raises NotImplementedError in embedded mode)\nstatus = collection.get_indexing_status()\n\n# after\ntry:\n    status = collection.get_indexing_status()\nexcept NotImplementedError:\n    status = None  # embedded mode: writes are synchronous, no async indexing to track","handlingStrategy":"try-catch","validationCode":"def indexing_status_safe(collection):\n    try:\n        return collection.get_indexing_status()\n    except NotImplementedError:\n        return None  # embedded mode: indexing is synchronous","typeGuard":null,"tryCatchPattern":"try:\n    status = collection.get_indexing_status()\nexcept NotImplementedError:\n    status = None  # not supported outside the Chroma server","preventionTips":["Reserve indexing-status polling for HttpClient deployments","In embedded mode, treat writes as immediately indexed and skip readiness checks","Abstract observability calls behind an interface so embedded runs can no-op them"],"tags":["chroma","embedded-mode","rust-bindings","indexing-status","not-implemented"],"backgroundTag":"feature-unsupported-in-embedded-mode","analyzedSha":"aecdd12c8a891610db8653630b066b32ceb678b5","analyzedAt":"2026-08-16T21:53:27.228Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}