in src/main/java/com/google/gcs/sdrs/service/worker/rule/impl/StsRuleExecutor.java [633:678]
public static List<TimeOfDay> generateScheduleTimeOfDay(RetentionRuleType retentionRuleType) {
int numberOfJobs = 0;
List<TimeOfDay> result = new ArrayList<>();
LocalTime now = LocalTime.now();
LocalTime timeOfDay = LocalTime.of(0, now.getMinute(), now.getSecond());
if (retentionRuleType == null) {
return result;
}
switch (retentionRuleType) {
case USER:
numberOfJobs =
Integer.parseInt(
SdrsApplication.getAppConfigProperty(
"sts.jobPoolOnDemand." + RetentionRuleType.USER.toString().toLowerCase(),
StsUtil.DEFAULT_STS_JOB_POOL_NUMBER));
numberOfJobs = Math.min(numberOfJobs, StsUtil.MAX_USER_STS_JOB_POOL_NUMBER);
break;
case DATASET:
numberOfJobs =
Integer.parseInt(
SdrsApplication.getAppConfigProperty(
"sts.jobPoolOnDemand." + RetentionRuleType.DATASET.toString().toLowerCase(),
StsUtil.DEFAULT_STS_JOB_POOL_NUMBER));
numberOfJobs = Math.min(numberOfJobs, StsUtil.MAX_DATASET_STS_JOB_POOL_NUMBER);
break;
case DEFAULT:
numberOfJobs = 1;
timeOfDay = LocalTime.of(23, 59, 59);
break;
default:
// shouldn't happen
return result;
}
result.add(StsUtil.convertToTimeOfDay(timeOfDay));
// incremental in minutes within 24 hours.
int increment = 24 * 60 / numberOfJobs;
for (int i = 1; i < numberOfJobs; i++) {
timeOfDay = timeOfDay.plusMinutes(increment);
result.add(StsUtil.convertToTimeOfDay(timeOfDay));
}
return result;
}