public void execute()

in priam/src/main/java/com/netflix/priam/backupv2/BackupVerificationTask.java [70:117]


    public void execute() throws Exception {
        // Ensure that backup version 2.0 is actually enabled.
        if (backupRestoreConfig.getSnapshotMetaServiceCronExpression().equals("-1")) {
            logger.info("Skipping backup verification. V2 backups are not enabled.");
            return;
        }

        if (instanceState.getRestoreStatus() != null
                && instanceState.getRestoreStatus().getStatus() != null
                && instanceState.getRestoreStatus().getStatus() == Status.STARTED) {
            logger.info("Skipping backup verification. Priam is in restore mode.");
            return;
        }

        // Validate the backup done in last x hours.
        Instant now = DateUtil.getInstant();
        Instant slo =
                now.minus(backupRestoreConfig.getBackupVerificationSLOInHours(), ChronoUnit.HOURS);
        DateRange dateRange = new DateRange(slo, now);
        List<BackupMetadata> verifiedBackups =
                backupVerification.verifyBackupsInRange(
                        BackupVersion.SNAPSHOT_META_SERVICE, dateRange);

        verifiedBackups
                .stream()
                .filter(result -> result.getLastValidated().toInstant().isAfter(now))
                .forEach(
                        result -> {
                            Path snapshotLocation = Paths.get(result.getSnapshotLocation());
                            String snapshotKey =
                                    snapshotLocation
                                            .subpath(1, snapshotLocation.getNameCount())
                                            .toString();
                            logger.info(
                                    "Sending {} message for backup: {}",
                                    AbstractBackupPath.BackupFileType.SNAPSHOT_VERIFIED,
                                    snapshotKey);
                            backupNotificationMgr.notify(
                                    snapshotKey, result.getStart().toInstant());
                        });

        if (verifiedBackups.isEmpty()) {
            logger.error(
                    "Not able to find any snapshot which is valid in our SLO window: {} hours",
                    backupRestoreConfig.getBackupVerificationSLOInHours());
            backupMetrics.incrementBackupVerificationFailure();
        }
    }