diff --git a/services/history-v1/storage/lib/backupVerifier.mjs b/services/history-v1/storage/lib/backupVerifier.mjs index 83952768c2..ba1b1bafab 100644 --- a/services/history-v1/storage/lib/backupVerifier.mjs +++ b/services/history-v1/storage/lib/backupVerifier.mjs @@ -221,23 +221,25 @@ export async function verifyProject(historyId, endTimestamp) { export class BackupCorruptedError extends OError {} export class BackupRPOViolationError extends OError {} -const HEALTH_CHECK_PROJECTS = JSON.parse(config.get('healthCheckProjects')) export async function healthCheck() { - if (!Array.isArray(HEALTH_CHECK_PROJECTS)) { - throw new Error('expected healthCheckProjects to be an array') + /** @type {Array} */ + const HEALTH_CHECK_BLOBS = JSON.parse(config.get('healthCheckBlobs')) + if (HEALTH_CHECK_BLOBS.length !== 2) { + throw new Error('expected 2 healthCheckBlobs') } - if (HEALTH_CHECK_PROJECTS.length !== 2) { - throw new Error('expected 2 healthCheckProjects') + if (!HEALTH_CHECK_BLOBS.some(path => path.split('/')[0].length === 24)) { + throw new Error('expected mongo id in healthCheckBlobs') } - if (!HEALTH_CHECK_PROJECTS.some(id => id.length === 24)) { - throw new Error('expected mongo id in healthCheckProjects') + if (!HEALTH_CHECK_BLOBS.some(path => path.split('/')[0].length < 24)) { + throw new Error('expected postgres id in healthCheckBlobs') } - if (!HEALTH_CHECK_PROJECTS.some(id => id.length < 24)) { - throw new Error('expected postgres id in healthCheckProjects') + if (HEALTH_CHECK_BLOBS.some(path => path.split('/')[1]?.length !== 40)) { + throw new Error('expected hash in healthCheckBlobs') } - for (const historyId of HEALTH_CHECK_PROJECTS) { - await verifyProjectWithErrorContext(historyId) + for (const path of HEALTH_CHECK_BLOBS) { + const [historyId, hash] = path.split('/') + await verifyBlob(historyId, hash) } } export class BackupCorruptedMissingBlobError extends BackupCorruptedError {}