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
- Check vector DB connectivity/credentials for the configured cfg.storeBackend
- Fix the embedding provider config — a failed provider probe can push the store into degraded mode
- Inspect logs just before the throw for the store's own init failure reason
- 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
- Monitor vector DB availability before service start (readiness probe)
- Validate storeBackend config values against supported backends
- Test embedding provider connectivity during startup
- Fail fast on degraded stores rather than allowing silent data loss
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
- Local embedding model warmup has not been started. Call star
- ${TAG} [L2] VectorStore unavailable — cannot read L1 memorie
- service_id must be provided
AI-assisted analysis of TencentCloud/TencentDB-Agent-Memory@3efcd317b8 (2026-09-01).
Data as JSON: /api/errors/e6bf0df13dbc3a08.
Report an issue: GitHub.