TencentCloud/TencentDB-Agent-Memory · critical

${TAG} VectorStore is in degraded mode — refusing to proceed

Error message

${TAG} VectorStore is in degraded mode — refusing to proceed without functional store

What it means

During pipeline startup, _doInitStores initializes the VectorStore with the embedding provider info. If vectorStore.isDegraded() is true afterwards — meaning the store fell back to a non-functional stub (e.g. backend connection or init failed) — the factory throws rather than building a pipeline that would silently lose memory operations.

Source

Thrown at MemoryCore/src/utils/pipeline-factory.ts:312

): Promise<StoreInitResult> {
  let vectorStore: IMemoryStore | undefined;
  let embeddingService: EmbeddingService | undefined;
  let needsReindex = false;
  let reindexReason: string | undefined;

  try {
    const bundle = createStoreBundle(cfg, {
      dataDir: pluginDataDir,
      logger,
    });
    vectorStore = bundle.store;
    embeddingService = bundle.embedding ?? undefined;

    const providerInfo = embeddingService?.getProviderInfo();
    const initResult = await vectorStore.init(providerInfo);

    if (vectorStore.isDegraded()) {
      throw new Error(`${TAG} VectorStore is in degraded mode — refusing to proceed without functional store`);
    } else {
      logger.debug?.(
        `${TAG} Store initialized: backend=${cfg.storeBackend}, provider=${cfg.embedding.provider}`,
      );
      needsReindex = initResult.needsReindex;
      reindexReason = initResult.reason;

      // ── Manifest: first-write + config-drift detection ──
      try {
        const currentStoreInfo = buildStoreInfo(bundle.storeSnapshot);
        const existing = readManifest(pluginDataDir);

        if (!existing) {
          // First init — write manifest
          const manifest: Manifest = {
            version: 1,
            createdAt: new Date().toISOString(),
            store: currentStoreInfo,

View on GitHub (pinned to 3efcd317b8)

Solutions

  1. Check vector DB connectivity/credentials for the configured cfg.storeBackend
  2. Fix the embedding provider config — a failed provider probe can push the store into degraded mode
  3. Inspect logs just before the throw for the store's own init failure reason
  4. If degradation is expected/acceptable in your env, gate with an explicit override instead of proceeding silently

Example fix

// before
cfg.storeBackend = "qdrant"; // server not running
// after
cfg.storeBackend = "local"; // or start qdrant before boot
Defensive patterns

Strategy: try-catch

Validate before calling

await vectorStore.init(providerInfo);
if (vectorStore.isDegraded()) { logger.error('vector store degraded; fix backend before starting pipeline'); process.exit(1); }

Try / catch

try { await factory.initStores(); } catch (e) { if (e.message.includes('degraded mode')) { logger.error('Vector store backend unreachable/misconfigured:', e.message); process.exit(1); } throw e; }

Prevention

When it happens

Trigger: createPipeline/initStores runs while the configured store backend (e.g. a vector DB) is unreachable, misconfigured, or its init() failed causing the store to enter degraded mode.

Common situations: Vector DB container not started; wrong storeBackend config; embedding provider endpoint down during store init; network/firewall blocking the store port in prod.

Related errors


AI-assisted analysis of TencentCloud/TencentDB-Agent-Memory@3efcd317b8 (2026-09-01). Data as JSON: /api/errors/e6bf0df13dbc3a08. Report an issue: GitHub.