kestra-io/kestra · error · PebbleException
The 'isLastWorkingDay()' function received an invalid 'worki
Error message
The 'isLastWorkingDay()' function received an invalid 'workingDays' value: '{trimmed}'. Expected day names like MONDAY, TUESDAY, etc. What it means
The workingDays argument is parsed as a comma- or space-separated list of day names; each token must be a valid DayOfWeek enum constant (case-insensitive). One token failed DayOfWeek.valueOf.
Source
Thrown at core/src/main/java/io/kestra/core/runners/pebble/functions/IsLastWorkingDayFunction.java:90
return localDate.isEqual(candidate);
}
private Set<DayOfWeek> resolveWorkingDays(Object workingDaysArg, PebbleTemplate self, int lineNumber) {
if (workingDaysArg == null || workingDaysArg.toString().isBlank()) {
return DEFAULT_WORKING_DAYS;
}
String[] parts = workingDaysArg.toString().split("[,\\s]+");
Set<DayOfWeek> result = EnumSet.noneOf(DayOfWeek.class);
for (String part : parts) {
String trimmed = part.trim();
if (trimmed.isEmpty()) {
continue;
}
try {
result.add(DayOfWeek.valueOf(trimmed.toUpperCase()));
} catch (IllegalArgumentException e) {
throw new PebbleException(
e,
"The 'isLastWorkingDay()' function received an invalid 'workingDays' value: '" + trimmed + "'. Expected day names like MONDAY, TUESDAY, etc.",
lineNumber, self.getName()
);
}
}
if (result.isEmpty()) {
throw new PebbleException(null, "The 'isLastWorkingDay()' function requires at least one valid day in 'workingDays'.", lineNumber, self.getName());
}
return result;
}
@Override
public List<String> getArgumentNames() {
return List.of("date", "workingDays");
}View on GitHub (pinned to 823fada927)
Solutions
- Use full uppercase day names, comma- or space-separated: 'MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY'.
- Omit workingDays to use the default Mon–Fri.
Example fix
// before
{{ isLastWorkingDay(date='2024-01-31', workingDays='MON,TUE') }}
// after
{{ isLastWorkingDay(date='2024-01-31', workingDays='MONDAY,TUESDAY') }} Defensive patterns
Strategy: validation
Validate before calling
{% set days = (workingDays ?? '')|upper %}{% if days is empty %}{{ isLastWorkingDay(date=myDate) }}{% elseif days in ['MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY'] %}{{ isLastWorkingDay(date=myDate, workingDays=days) }}{% else %}invalid-day{% endif %} Prevention
- Use full uppercase day names, comma- or space-separated.
- Omit workingDays to use the default Mon–Fri set.
- Never use 3-letter abbreviations like 'MON'.
When it happens
Trigger: Passing workingDays='MON,TUE' (3-letter abbreviations), 'Monday' (lowercase is fine but 'Mondayy' is not), or a typo.
Common situations: Using 3-letter abbreviations or localized day names instead of the full uppercase enum name.
Related errors
- The 'isDayWeekInMonth()' function received an invalid 'dayOf
- The 'isDayWeekInMonth()' function received an invalid 'posit
- The 'isLastWorkingDay()' function requires at least one vali
- The 'hourOfDay()' function expects a 'date' argument.
- The 'hourOfDay()' function could not parse 'date': {e2.getMe
AI-assisted analysis of kestra-io/kestra@823fada927 (2026-08-14).
Data as JSON: /api/errors/958e27c533470e0b.
Report an issue: GitHub.