chroma-core/chroma · error · NotImplementedError

Indexing status is not implemented for Local Chroma

Error message

Indexing status is not implemented for Local Chroma

What it means

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.

Source

Thrown at chromadb/api/rust.py:382

        )

    @override
    def _fork_count(
        self,
        collection_id: UUID,
        tenant: str = DEFAULT_TENANT,
        database: str = DEFAULT_DATABASE,
    ) -> int:
        raise NotImplementedError("Fork count is not implemented for Local Chroma")

    @override
    def _get_indexing_status(
        self,
        collection_id: UUID,
        tenant: str = DEFAULT_TENANT,
        database: str = DEFAULT_DATABASE,
    ) -> "IndexingStatus":
        raise NotImplementedError("Indexing status is not implemented for Local Chroma")

    @override
    def _search(
        self,
        collection_id: UUID,
        searches: List[Search],
        tenant: str = DEFAULT_TENANT,
        database: str = DEFAULT_DATABASE,
        read_level: ReadLevel = ReadLevel.INDEX_AND_WAL,
    ) -> SearchResult:
        raise NotImplementedError("Search is not implemented for Local Chroma")

    @override
    def _count(
        self,
        collection_id: UUID,
        tenant: str = DEFAULT_TENANT,
        database: str = DEFAULT_DATABASE,

View on GitHub (pinned to aecdd12c8a)

Solutions

  1. Query indexing status through chromadb.HttpClient against a Chroma server, which implements it
  2. In embedded mode, treat indexing as synchronous (local writes are applied in-process) and drop the status check
  3. Wrap the call in a capability check or try/except NotImplementedError when the same code must run in both modes

Example fix

# before (raises NotImplementedError in embedded mode)
status = collection.get_indexing_status()

# after
try:
    status = collection.get_indexing_status()
except NotImplementedError:
    status = None  # embedded mode: writes are synchronous, no async indexing to track
Defensive patterns

Strategy: try-catch

Validate before calling

def indexing_status_safe(collection):
    try:
        return collection.get_indexing_status()
    except NotImplementedError:
        return None  # embedded mode: indexing is synchronous

Try / catch

try:
    status = collection.get_indexing_status()
except NotImplementedError:
    status = None  # not supported outside the Chroma server

Prevention

When it happens

Trigger: client = chromadb.RustClient(...); client.get_collection('docs').get_indexing_status(). Any Collection.get_indexing_status() call in embedded (non-HttpClient) mode.

Common situations: 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.

Related errors


AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16). Data as JSON: /api/errors/8b8ded410f240cb1. Report an issue: GitHub.