conductor-oss/conductor · error · NonRetryableException

VectorDB not found: <vectorDBName>

Error message

VectorDB not found: <vectorDBName>

What it means

Thrown as NonRetryableException by VectorDBs.storeEmbeddings when vectorDBProvider.get(vectorDBName, context) returns null. The named vector database integration is not registered/available in the provider, so Conductor cannot persist embeddings. Fails the task terminally because no amount of retries will register a missing integration.

Source

Thrown at ai/src/main/java/org/conductoross/conductor/ai/vectordb/VectorDBs.java:49

    public VectorDBs(VectorDBProvider vectorDBProvider) {
        this.vectorDBProvider = vectorDBProvider;
        log.info("vectorDBProvider: {}", vectorDBProvider);
    }

    public int storeEmbeddings(
            String vectorDBName,
            TaskContext context,
            String indexName,
            String namespace,
            String text,
            String parentDocId,
            String id,
            List<Float> embeddings,
            Map<String, Object> metadata) {
        VectorDB db = vectorDBProvider.get(vectorDBName, context);
        if (db == null) {
            throw new NonRetryableException("VectorDB not found: " + vectorDBName);
        }
        return db.updateEmbeddings(
                indexName, namespace, text, parentDocId, id, embeddings, metadata);
    }

    public List<IndexedDoc> searchEmbeddings(
            String vectorDBName,
            TaskContext context,
            String indexName,
            String namespace,
            List<Float> embeddings,
            int maxResults) {
        VectorDB db = vectorDBProvider.get(vectorDBName, context);
        if (db == null) {
            throw new NonRetryableException("VectorDB not found: " + vectorDBName);
        }
        return db.search(indexName, namespace, embeddings, maxResults);
    }

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Check the exact vectorDBName spelling in the task input against the registered integration names.
  2. Ensure the target integration module is on the classpath and its config (e.g. conductor.vectordb.*) is set so the provider registers it.
  3. List/log the available vectorDB names from vectorDBProvider to confirm what is registered.
  4. If dynamically named, verify the name is resolved from a non-empty config/template variable.

Example fix

// before
vectorDBs.storeEmbeddings("pincone", ctx, ...);  // typo
// after
vectorDBs.storeEmbeddings("pinecone", ctx, ...);
Defensive patterns

Strategy: validation

Validate before calling

// Check the integration is registered before storing
if (vectorDBProvider.get(vectorDBName, context) == null) {
    throw new IllegalStateException("vectorDB '" + vectorDBName + "' is not registered; check config");
}

Prevention

When it happens

Trigger: Calling storeEmbeddings with a vectorDBName that no registered VectorDB provider supplies; referencing an integration name that is misconfigured or disabled; provider not yet initialized at call time.

Common situations: Typo in the vectorDB name in the workflow; the integration (e.g. 'pinecone', 'postgres', 'mongodb') bean is not on the classpath or not configured; config prefix mismatch so the provider never registered the bean; env-specific deployment missing the integration module.

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/2097e205d74a6aac. Report an issue: GitHub.