{"record":{"id":"fe5c858ff1e80aec","repo":"cube-js/cube","slug":"older-version-of-orchestrator-is-being-used-with-n","errorCode":null,"errorMessage":"Older version of orchestrator is being used with newer version of Cube Store driver. Please upgrade cube.js.","messagePattern":"Older version of orchestrator is being used with newer version of Cube Store driver\\. Please upgrade cube\\.js\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts","lineNumber":459,"sourceCode":"        )\n      );\n\n      await Promise.all(pipelinePromises);\n\n      const files = await Promise.all(filePromises);\n      if (files.length > 0) {\n        options.files = files.map(fileName => `temp://${fileName}`);\n      }\n\n      return this.createTableWithOptions(table, columns, options, queryTracingObj);\n    } finally {\n      await Promise.all(tempFiles.map(tempFile => unlink(tempFile)));\n    }\n  }\n\n  private async importStreamingSource(columns: Column[], tableData: StreamingSourceTableData, table: string, indexes: string, uniqueKeyColumns: string[] | null, queryTracingObj?: any, sealAt?: string) {\n    if (!uniqueKeyColumns) {\n      throw new Error('Older version of orchestrator is being used with newer version of Cube Store driver. Please upgrade cube.js.');\n    }\n    await this.query(\n      `CREATE SOURCE OR UPDATE ${this.quoteIdentifier(tableData.streamingSource.name)} as ? VALUES (${Object.keys(tableData.streamingSource.credentials).map(k => `${k} = ?`)})`,\n      [tableData.streamingSource.type]\n        .concat(\n          Object.keys(tableData.streamingSource.credentials).map(k => tableData.streamingSource.credentials[k])\n        ),\n      queryTracingObj\n    );\n\n    let locations = [`stream://${tableData.streamingSource.name}/${tableData.streamingTable}`];\n\n    if (tableData.partitions) {\n      locations = [];\n      for (let i = 0; i < tableData.partitions; i++) {\n        locations.push(`stream://${tableData.streamingSource.name}/${tableData.streamingTable}/${i}`);\n      }\n    }","sourceCodeStart":441,"sourceCodeEnd":477,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-cubestore-driver/src/CubeStoreDriver.ts#L441-L477","documentation":"importStreamingSource requires uniqueKeyColumns to build CREATE SOURCE OR UPDATE for Cube Store streaming sources. Newer driver versions need this parameter, which older orchestrators don't pass — the driver detects the null and throws to prevent silently broken streaming pre-aggregations.","triggerScenarios":"uploadTable called for a streamingSource table with uniqueKeyColumns=null, i.e. an older cubejs-query-orchestrator that predates the uniqueKeyColumns parameter being wired through.","commonSituations":"Partial upgrade: cubejs-cubestore-driver updated but cubejs-query-orchestrator/cubejs-server-core left on an older version (or vice versa in a monorepo with hoisted mismatched deps); lockfile pinning old orchestrator.","solutions":["Upgrade the whole cube.js package set together: yarn upgrade @cubejs-backend/server (and query-orchestrator, cubestore-driver) to the same release.","Check installed versions (yarn why / npm ls) for mixed @cubejs-backend/* versions and dedupe.","If streaming sources aren't needed, downgrade the cubestore driver to match the orchestrator.","After upgrade, rebuild the pre-aggregation."],"exampleFix":"// before (mixed versions)\n\"dependencies\": {\n  \"@cubejs-backend/cubestore-driver\": \"^0.36.0\",\n  \"@cubejs-backend/query-orchestrator\": \"^0.33.0\"\n}\n// after\n\"dependencies\": {\n  \"@cubejs-backend/cubestore-driver\": \"^0.36.0\",\n  \"@cubejs-backend/query-orchestrator\": \"^0.36.0\"\n}","handlingStrategy":"validation","validationCode":"import pkgOrch from '@cubejs-backend/query-orchestrator/package.json';\nimport pkgDrv from '@cubejs-backend/cubestore-driver/package.json';\nif (pkgOrch.version !== pkgDrv.version) {\n  console.warn(`Version mismatch: orchestrator ${pkgOrch.version} vs cubestore-driver ${pkgDrv.version}; streaming pre-aggregations will fail`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  await driver.uploadTable(table, columns, tableData);\n} catch (e) {\n  if (e.message.includes('Older version of orchestrator')) {\n    console.error('Upgrade @cubejs-backend/server, query-orchestrator, and cubestore-driver together');\n  }\n  throw e;\n}","preventionTips":["Always upgrade all @cubejs-backend/* packages together to the same release.","Check yarn why / npm ls for duplicate mismatched versions and dedupe the lockfile.","Read release notes before partial upgrades of backend packages.","Pin backend packages to identical versions in package.json."],"tags":["cubestore","version-mismatch","streaming"],"backgroundTag":"driver-orchestrator-version-mismatch","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}