{"record":{"id":"1adf1e99f8d6dc78","repo":"cube-js/cube","slug":"cannot-set-property-string-prop-on-instanc","errorCode":null,"errorMessage":"Cannot set property '${String(prop)}' on ${instanceName}. The '${name}' has been cleaned up and is no longer available.","messagePattern":"Cannot set property '(.+?)' on (.+?)\\. The '(.+?)' has been cleaned up and is no longer available\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cubejs-backend-shared/src/disposedProxy.ts","lineNumber":14,"sourceCode":"/**\n * Creates a proxy object that throws an error on any property access.\n * Used as a safeguard after disposal to catch dangling references.\n */\nexport function disposedProxy(name: string, instanceName: string): any {\n  return new Proxy({}, {\n    get(_target: object, prop: string | symbol): never {\n      throw new Error(\n        `Cannot access property '${String(prop)}' on ${instanceName}. ` +\n        `The '${name}' has been cleaned up and is no longer available.`\n      );\n    },\n    set(_target: object, prop: string | symbol): never {\n      throw new Error(\n        `Cannot set property '${String(prop)}' on ${instanceName}. ` +\n        `The '${name}' has been cleaned up and is no longer available.`\n      );\n    },\n    apply(): never {\n      throw new Error(\n        `Cannot call method on ${instanceName}. ` +\n        `The '${name}' has been cleaned up and is no longer available.`\n      );\n    },\n    has(_target: object, _prop: string | symbol): never {\n      throw new Error(\n        `Cannot check property existence on ${instanceName}. ` +\n        `The '${name}' has been cleaned up and is no longer available.`\n      );\n    },\n    ownKeys(): never {\n      throw new Error(","sourceCodeStart":1,"sourceCodeEnd":32,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-backend-shared/src/disposedProxy.ts#L1-L32","documentation":"Lifecycle safeguard in disposedProxy's set trap: code is attempting to write a property on a proxy replacing a disposed instance (`name`). Like the get trap, it detects use-after-dispose — a component kept a reference to the instance after cleanup and tried to mutate it.","triggerScenarios":"Thrown at packages/cubejs-backend-shared/src/disposedProxy.ts:14 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Locate the stale reference performing the write and remove or re-point it after disposal.","Guard mutation paths so they do not run once the owning instance has been disposed.","Replace the disposed instance through the lifecycle manager before writing to it."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}