{"record":{"id":"ec9be348a488f8ca","repo":"ruvnet/ruflo","slug":"ruvector-bridge-not-initialized-call-initialize","errorCode":null,"errorMessage":"RuVector Bridge not initialized. Call initialize() first.","messagePattern":"RuVector Bridge not initialized\\. Call initialize\\(\\) first\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/plugins/src/integrations/ruvector/ruvector-bridge.ts","lineNumber":1831,"sourceCode":"      memoryStats: {\n        usedBytes: 0, // Would need OS-level access\n        peakBytes: 0,\n        indexBytes: Number(stats.total_size),\n        cacheBytes: 0,\n      },\n    };\n  }\n\n  // ===========================================================================\n  // Private Helper Methods\n  // ===========================================================================\n\n  /**\n   * Ensure the plugin is initialized.\n   */\n  private ensureInitialized(): void {\n    if (!this.vectorOps || !this.connectionManager) {\n      throw new Error('RuVector Bridge not initialized. Call initialize() first.');\n    }\n  }\n\n  /**\n   * Ensure pgvector extension is installed.\n   */\n  private async ensureExtension(): Promise<void> {\n    try {\n      await this.connectionManager!.query(\"CREATE EXTENSION IF NOT EXISTS vector\");\n      this.logger.debug('pgvector extension ensured');\n    } catch (error) {\n      this.logger.warn('Could not create pgvector extension (may require superuser privileges)', error);\n    }\n  }\n\n  /**\n   * Forward connection manager events to plugin event bus.\n   */","sourceCodeStart":1813,"sourceCodeEnd":1849,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/plugins/src/integrations/ruvector/ruvector-bridge.ts#L1813-L1849","documentation":"Thrown by RuVectorBridge.ensureInitialized() when this.vectorOps or this.connectionManager is unset, i.e. the bridge's initialize() never completed successfully. Every public operation routes through this guard, so any vector/search call made before (or after a failed) initialize() fails fast instead of dereferencing undefined internals.","triggerScenarios":"Calling any bridge operation (upsert, search, delete, index ops) on a freshly constructed RuVectorBridge; using the bridge after initialize() threw — e.g. the DB was down at boot and the error was swallowed by a catch that continued serving.","commonSituations":"Missing await on initialize() in startup; fire-and-forget init inside an event handler; health-check traffic arriving before async bootstrap finishes; initialize() failed on transient DB unavailability and the process kept running.","solutions":["Await bridge.initialize() in bootstrap and only register routes/workers afterward","If initialize() failed, exit or re-run it; do not let the app continue in a half-initialized state","Expose readiness from the bridge and gate request handling on it (fail health checks until ready)"],"exampleFix":"// before\nconst bridge = new RuVectorBridge(config);\nawait bridge.similaritySearch(queryVec, 10); // throws\n\n// after\nconst bridge = new RuVectorBridge(config);\nawait bridge.initialize();\nawait bridge.similaritySearch(queryVec, 10);","handlingStrategy":"validation","validationCode":"if (!isConnected(bridge)) {\n  await bridge.initialize();\n}\nawait bridge.similaritySearch(queryVector, 10);","typeGuard":"const isBridgeInitialized = (b: { isConnected?: boolean }): boolean =>\n  b.isConnected === true;","tryCatchPattern":"try {\n  await bridge.upsert(vectors);\n} catch (err) {\n  if (err instanceof Error && err.message.includes('Call initialize() first')) {\n    await bridge.initialize();\n    await bridge.upsert(vectors); // retry once after init\n  } else {\n    throw err;\n  }\n}","preventionTips":["Await bridge.initialize() in bootstrap and register routes/workers only afterwards","Wire the bridge's ready state into health/readiness probes","Never swallow initialize() failures — half-initialized bridges surface as this error on every call"],"tags":["database","lifecycle","initialization-order","vector-search"],"backgroundTag":"not-initialized","analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}