diff --git a/priam/src/main/java/com/netflix/priam/resources/BackupServletV2.java b/priam/src/main/java/com/netflix/priam/resources/BackupServletV2.java index 5d2b6a4f6..9ac66639e 100644 --- a/priam/src/main/java/com/netflix/priam/resources/BackupServletV2.java +++ b/priam/src/main/java/com/netflix/priam/resources/BackupServletV2.java @@ -23,6 +23,7 @@ import com.netflix.priam.backupv2.IMetaProxy; import com.netflix.priam.backupv2.SnapshotMetaTask; import com.netflix.priam.config.IConfiguration; +import com.netflix.priam.notification.BackupNotificationMgr; import com.netflix.priam.utils.DateUtil; import com.netflix.priam.utils.DateUtil.DateRange; import com.netflix.priam.utils.GsonJsonSerializer; @@ -53,6 +54,7 @@ public class BackupServletV2 { private final IMetaProxy metaProxy; private final Provider pathProvider; private final BackupV2Service backupService; + private final BackupNotificationMgr backupNotificationMgr; private static final String REST_SUCCESS = "[\"ok\"]"; @Inject @@ -65,7 +67,8 @@ public BackupServletV2( IBackupFileSystem fileSystem, @Named("v2") IMetaProxy metaV2Proxy, Provider pathProvider, - BackupV2Service backupService) { + BackupV2Service backupService, + BackupNotificationMgr backupNotificationMgr) { this.backupStatusMgr = backupStatusMgr; this.backupVerification = backupVerification; this.snapshotMetaService = snapshotMetaService; @@ -74,6 +77,7 @@ public BackupServletV2( this.metaProxy = metaV2Proxy; this.pathProvider = pathProvider; this.backupService = backupService; + this.backupNotificationMgr = backupNotificationMgr; } @GET @@ -131,6 +135,17 @@ public Response validateV2SnapshotByDate( .build(); } + // Send notification for any verified backups. This is useful in one-off backup consumption + // by downward dependencies. + // Side-effect: It may send notification for already verified snapshot i.e. duplicate + // message may be sent. + logger.info( + "Sending {} message for backup: {}", + AbstractBackupPath.BackupFileType.SNAPSHOT_VERIFIED, + result.get().remotePath); + + backupNotificationMgr.notify(result.get().remotePath, result.get().snapshotInstant); + return Response.ok(result.get().toString()).build(); }