{"record":{"id":"e7064faacf90e018","repo":"diegosouzapw/OmniRoute","slug":"migration-failed-to-prune-old-backups-message","errorCode":null,"errorMessage":"[Migration] Failed to prune old backups: ${message}","messagePattern":"\\[Migration\\] Failed to prune old backups: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lib/db/migrationRunner.ts","lineNumber":884,"sourceCode":"function pruneMigrationBackups(db: SqliteAdapter, backupDir: string): void {\n  try {\n    const maxFiles = process.env.DB_BACKUP_MAX_FILES\n      ? parsePositiveInt(process.env.DB_BACKUP_MAX_FILES, MAX_DB_BACKUPS)\n      : (readStoredBackupSetting(db, \"maxFiles\", 1) ?? MAX_DB_BACKUPS);\n    const retentionDays = process.env.DB_BACKUP_RETENTION_DAYS\n      ? parseNonNegativeInt(process.env.DB_BACKUP_RETENTION_DAYS, DEFAULT_DB_BACKUP_RETENTION_DAYS)\n      : (readStoredBackupSetting(db, \"retentionDays\", 0) ?? DEFAULT_DB_BACKUP_RETENTION_DAYS);\n\n    const result = pruneBackupDirectory({ backupDir, maxFiles, retentionDays });\n    if (result.deletedFiles > 0) {\n      console.log(\n        `[Migration] Pruned ${result.deletedFiles} old backup file(s) ` +\n          `(${result.keptBackupFamilies} kept, maxFiles=${maxFiles}, retentionDays=${retentionDays}).`\n      );\n    }\n  } catch (err: unknown) {\n    const message = err instanceof Error ? err.message : String(err);\n    console.warn(`[Migration] Failed to prune old backups: ${message}`);\n  }\n}\n\n/**\n * Create a pre-migration backup of the SQLite database using VACUUM INTO.\n * Returns the backup path on success, null on failure.\n */\nfunction createPreMigrationBackup(db: SqliteAdapter): string | null {\n  try {\n    const sqliteFile = db.name;\n    if (!sqliteFile || sqliteFile === \":memory:\") return null;\n\n    const backupDir = path.join(path.dirname(sqliteFile), \"db_backups\");\n    if (!fs.existsSync(backupDir)) {\n      fs.mkdirSync(backupDir, { recursive: true });\n    }\n\n    const timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");","sourceCodeStart":866,"sourceCodeEnd":902,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/db/migrationRunner.ts#L866-L902","documentation":"Error \"[Migration] Failed to prune old backups: ${message}\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/db/migrationRunner.ts:884 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}