in flink-autoscaler/src/main/java/org/apache/flink/autoscaler/utils/CalendarUtils.java [67:100]
static Optional<String> validateExcludedExpression(String expression) {
String[] subExpressions = expression.split("&&");
Optional<DailyCalendar> dailyCalendar = Optional.empty();
Optional<CronCalendar> cronCalendar = Optional.empty();
if (subExpressions.length > 2) {
return Optional.of(
String.format(
"Invalid value %s in the autoscaler config %s",
expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
}
for (String subExpression : subExpressions) {
subExpression = subExpression.strip();
Optional<DailyCalendar> daily = interpretAsDaily(subExpression);
dailyCalendar = daily.isPresent() ? daily : dailyCalendar;
Optional<CronCalendar> cron = interpretAsCron(subExpression);
cronCalendar = cron.isPresent() ? cron : cronCalendar;
if (daily.isEmpty() && cron.isEmpty()) {
return Optional.of(
String.format(
"Invalid value %s in the autoscaler config %s, the value is neither a valid daily expression nor a valid cron expression",
expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
}
}
if (subExpressions.length == 2 && (dailyCalendar.isEmpty() || cronCalendar.isEmpty())) {
return Optional.of(
String.format(
"Invalid value %s in the autoscaler config %s, the value can not be configured as dailyExpression && dailyExpression or cronExpression && cronExpression",
expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
}
return Optional.empty();
}