{"record":{"id":"2e90eba5a07d6443","repo":"mastra-ai/mastra","slug":"database-was-db-status-deleted-deleted","errorCode":null,"errorMessage":"Database was ${db.status === 'deleted' ? 'deleted' : 'scheduled for deletion'} while provisioning","messagePattern":"Database was (.+?) while provisioning","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cli/src/commands/db/platform-api.ts","lineNumber":214,"sourceCode":"\n  while (true) {\n    const db = await withPollingRetries(() => fetchDatabase(token, orgId, projectId, dbId));\n\n    if (db.status !== lastStatus) {\n      lastStatus = db.status;\n      opts?.onStatus?.(db.status);\n    }\n\n    if (db.status === 'ready') {\n      return db;\n    }\n\n    if (db.status === 'failed') {\n      throw new Error(`Database provisioning failed${db.error ? `: ${db.error}` : ' (no error detail from provider)'}`);\n    }\n\n    if (db.status === 'deleting' || db.status === 'deleted') {\n      throw new Error(\n        `Database was ${db.status === 'deleted' ? 'deleted' : 'scheduled for deletion'} while provisioning`,\n      );\n    }\n\n    if (Date.now() - start >= maxWaitMs) {\n      throw new Error(\n        `Timed out waiting for database to become ready (last status: ${db.status}). ` +\n          `Check again with: mastra env db show ${dbId}`,\n      );\n    }\n\n    await new Promise(resolve => setTimeout(resolve, intervalMs));\n  }\n}\n","sourceCodeStart":196,"sourceCodeEnd":229,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/cli/src/commands/db/platform-api.ts#L196-L229","documentation":"While pollDatabaseUntilReady waits for a newly created database to become 'ready', the platform can report the database as 'deleting' or 'deleted'. The CLI treats this as a terminal condition and throws, wording the message based on which of the two statuses was observed ('deleted' vs 'scheduled for deletion'). It means the database vanished mid-provisioning, typically due to a concurrent delete or a server-side lifecycle action.","triggerScenarios":"createDatabase -> pollDatabaseUntilReady sees db.status === 'deleting' or 'deleted' before the database ever reaches 'ready' — e.g., another operator or process issued a delete on the same database resource during the provisioning window.","commonSituations":"Two developers or a CI pipeline and a human both creating/deleting the same named database; a stale script deleting databases in the org; provider reaping failed/abandoned resources.","solutions":["Check with `mastra env db show <dbId>` to confirm the database's actual state","Verify no teammate/script is deleting the same database concurrently","Re-run `mastra env db create` to provision a fresh database","If deletions recur unexpectedly, audit org automation tokens and delete hooks"],"exampleFix":"// before\n// script A: createDatabase(...); script B: deleteDatabase(dbId) — poll sees 'deleting'\n// after\n// serialize operations: run delete first, await completion, then createDatabase(...)","handlingStrategy":"try-catch","validationCode":"// Guard against concurrent deletes: check state immediately before create\nconst existing = await fetchDatabase(token, orgId, projectId, dbId).catch(() => null);\nif (existing && ['deleting','deleted'].includes(existing.status)) {\n  throw new Error('Database is being deleted; wait and re-create');\n}","typeGuard":"function isVanishedDuringProvisioning(db: { status: string }): boolean {\n  return db.status === 'deleting' || db.status === 'deleted';\n}","tryCatchPattern":"try {\n  const db = await createDatabase(opts);\n} catch (err) {\n  if (err instanceof Error && /while provisioning$/.test(err.message)) {\n    // safe to re-create a fresh database after confirming no concurrent deleter\n  } else throw err;\n}","preventionTips":["Serialize create/delete operations on the same database across scripts and teammates","Audit CI jobs and automation tokens for overlapping delete schedules","Use distinct database names per environment/pipeline to avoid collisions","Re-check status with `mastra env db show` before recreating"],"tags":["provisioning","race-condition","polling","lifecycle"],"backgroundTag":"resource-deleted-during-provisioning","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}