mem0ai/mem0 · error · Error

Databricks index status did not report a readiness flag afte

Error message

Databricks index status did not report a readiness flag after sync.

What it means

Thrown when polling GET /indexes/{fullIndexName} after a sync operation and the response's status.ready field is neither true nor false (i.e. undefined/null). The provider treats a missing readiness flag as a malformed or unexpected API response rather than 'not ready', and fails fast instead of looping on an unknowable state.

Source

Thrown at mem0-ts/src/oss/src/vector_stores/databricks.ts:1250

      `Timed out waiting for Databricks endpoint ${this.endpointName} to become ready.`,
    );
  }

  private async waitForIndexReadiness(): Promise<void> {
    const deadline = Date.now() + this.syncTimeoutMs;

    while (Date.now() <= deadline) {
      const response = await this.httpClient.get(
        `/indexes/${encodeURIComponent(this.fullIndexName)}`,
      );
      const ready = response?.data?.status?.ready;

      if (ready === true) {
        return;
      }

      if (ready !== false) {
        throw new Error(
          "Databricks index status did not report a readiness flag after sync.",
        );
      }

      if (this.syncPollIntervalMs > 0) {
        await new Promise((resolve) =>
          setTimeout(resolve, this.syncPollIntervalMs),
        );
      }
    }

    throw new Error(
      `Timed out waiting for Databricks index ${this.fullIndexName} to become ready after sync.`,
    );
  }

  private shouldPaginateForLocalFiltering(filters?: SearchFilters): boolean {
    if (!filters || Object.keys(filters).length === 0) {

View on GitHub (pinned to 001c235229)

Solutions

  1. Log the raw response body of GET /indexes/{fullIndexName} to confirm what status is actually returned; a missing ready flag usually means the index is missing or in a terminal state.
  2. Verify fullIndexName uses the correct 'catalog.schema.index' format and that the index exists in the Databricks UI.
  3. Recreate the index if it was dropped or failed to create, then retry the operation.
  4. Check for Databricks API version differences on your workspace and pin/upgrade the mem0-ts version that matches it.
Defensive patterns

Strategy: validation

Validate before calling

const res = await client.get(`/api/2.0/vector-search/indexes/${encodeURIComponent(fullIndexName)}`);
const ready = res?.data?.status?.ready;
if (typeof ready !== 'boolean') {
  // index missing or in a terminal state: recreate or alert before syncing
  console.error('Index status payload unexpected:', JSON.stringify(res?.data));
}

Type guard

const hasReadinessFlag = (res: unknown): res is { data: { status: { ready: boolean } } } =>
  typeof (res as any)?.data?.status?.ready === 'boolean';

Try / catch

try {
  await store.insert(vectors, ids, payloads);
} catch (e) {
  if (e instanceof Error && e.message.includes('did not report a readiness flag')) {
    // inspect/recreate the index in Databricks, then retry the insert
  }
  throw e;
}

Prevention

When it happens

Trigger: Any insert/update flow that triggers index sync, then calls waitForIndexReadiness(), when the Databricks API response for the index omits data.status.ready (different API version, index in a deleted/failed state, or response shape change).

Common situations: Databricks REST API version drift between workspace versions; index was deleted out-of-band while the app was syncing; the fullIndexName (schema.index) does not exist so the response has no status object; Databricks returning an error payload that is not shaped as expected.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/572abecb6dbe6c28. Report an issue: GitHub.