{"record":{"id":"64e062618a5d779c","repo":"paperclipai/paperclip","slug":"skipping-scheduled-database-backup-because-a-previ","errorCode":null,"errorMessage":"Skipping scheduled database backup because a previous backup is still running","messagePattern":"Skipping scheduled database backup because a previous backup is still running","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/index.ts","lineNumber":785,"sourceCode":"    throw err;\n  }\n\n  // Operator setting defaults (PAPERCLIP_SETTING_DEFAULTS). Same fail-closed\n  // posture as the managed-config parse above: malformed JSON or an invalid\n  // value for a known field refuses startup; unknown field names only warn.\n  try {\n    const operatorDefaults = getOperatorSettingDefaults();\n    if (operatorDefaults && Object.keys(operatorDefaults).length > 0) {\n      logger.warn(\n        { defaultedSettings: Object.keys(operatorDefaults).sort() },\n        \"operator setting defaults active\",\n      );\n    }\n  } catch (err) {\n    logger.error({ err }, \"invalid PAPERCLIP_SETTING_DEFAULTS; refusing to start (fail closed)\");\n    throw err;\n  }\n\n  const uiMode = config.uiDevMiddleware ? \"vite-dev\" : config.serveUi ? \"static\" : \"none\";\n  const storageService = createStorageServiceFromConfig(config);\n  const feedback = feedbackService(db as any, {\n    shareClient: createFeedbackTraceShareClientFromConfig(config),\n  });\n  const backupSettingsSvc = instanceSettingsService(db);\n  const databaseBackupMaxAgeHours = Math.max(\n    1,\n    Number(process.env.PAPERCLIP_DB_BACKUP_MAX_AGE_HOURS) ||\n      Math.max(26, Math.ceil((config.databaseBackupIntervalMinutes / 60) * 2)),\n  );\n  const databaseBackupAlertFile =\n    process.env.PAPERCLIP_DB_BACKUP_ALERT_FILE ||\n    resolve(config.databaseBackupDir, \"..\", \"health\", \"db-backup-to-s3.failure\");\n  const databaseBackupAlertFiles = [\n    databaseBackupAlertFile,\n    resolve(config.databaseBackupDir, \"db-backup-to-s3.failure\"),\n    resolve(config.databaseBackupDir, \"..\", \"db-backup-to-s3.failure\"),","sourceCodeStart":767,"sourceCodeEnd":803,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/index.ts#L767-L803","documentation":"Scheduled-backup skip log in startServer's backup loop. Fires when runServerDatabaseBackup is invoked while the previous backup cycle is still in flight (databaseBackupInFlight flag set); the tick is skipped to avoid concurrent backup runs.","triggerScenarios":"Thrown at server/src/index.ts:666 when the library encounters an invalid state.","commonSituations":"Logged when a scheduled database backup fires while a previous backup is still running; the run is skipped to avoid concurrent backups.","solutions":["No immediate action needed; the next scheduled run will back up once the current backup finishes.","If backups repeatedly overlap, investigate why the backup is slow (database size, disk I/O) or increase the backup interval."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}