in priam/src/main/java/com/netflix/priam/backup/BackupStatusMgr.java [189:228]
public List<BackupMetadata> getLatestBackupMetadata(
BackupVersion backupVersion, DateUtil.DateRange dateRange) {
Instant startDay = dateRange.getStartTime().truncatedTo(ChronoUnit.DAYS);
Instant endDay = dateRange.getEndTime().truncatedTo(ChronoUnit.DAYS);
List<BackupMetadata> allBackups = new ArrayList<>();
Instant previousDay = endDay;
do {
// We need to find the latest backupmetadata in this date range.
logger.info(
"Will try to find snapshot for : {}",
DateUtil.formatInstant(DateUtil.yyyyMMddHHmm, previousDay));
List<BackupMetadata> backupsForDate = locate(new Date(previousDay.toEpochMilli()));
if (backupsForDate != null) allBackups.addAll(backupsForDate);
previousDay = previousDay.minus(1, ChronoUnit.DAYS);
} while (!previousDay.isBefore(startDay));
// Return all the backups which are FINISHED and were "started" in the dateRange provided.
// Do not compare the end time of snapshot as it may take random amount of time to finish
// the snapshot.
return allBackups
.stream()
.filter(Objects::nonNull)
.filter(backupMetadata -> backupMetadata.getStatus() == Status.FINISHED)
.filter(backupMetadata -> backupMetadata.getBackupVersion().equals(backupVersion))
.filter(
backupMetadata ->
backupMetadata
.getStart()
.toInstant()
.compareTo(dateRange.getStartTime())
>= 0
&& backupMetadata
.getStart()
.toInstant()
.compareTo(dateRange.getEndTime())
<= 0)
.sorted(Comparator.comparing(BackupMetadata::getStart).reversed())
.collect(Collectors.toList());
}