[
https://issues.apache.org/jira/browse/NIFI-16515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Stieglitz reassigned NIFI-16515:
---------------------------------------
Assignee: Daniel Stieglitz
> Cron Scheduling Executes Twice After Daylight Saving Time Transition (NiFi
> 2.9.0)
> ---------------------------------------------------------------------------------
>
> Key: NIFI-16515
> URL: https://issues.apache.org/jira/browse/NIFI-16515
> Project: Apache NiFi
> Issue Type: Bug
> Affects Versions: 2.9.0
> Reporter: Raymond van den Bedum
> Assignee: Daniel Stieglitz
> Priority: Minor
>
> A GenerateFlowFile processor configured with CRON-driven scheduling executed
> twice on the first Monday following the daylight saving time (DST) transition
> from summer time to standard time.
> The processor was already running before the DST transition and had not been
> stopped or restarted.
> The configured CRON expression should execute exactly once per weekday at
> 20:30 local time. However, two executions occurred one hour apart.
> h2. Environment
> * Apache NiFi version: 2.9.0
> * Processor: GenerateFlowFile
> * Scheduling strategy: CRON driven
> * CRON expression: {{0 30 20 ? * MON-FRI}}
> * Timezone: Europe/Amsterdam
> * DST transition: October 25, 2026 (CEST UTC+02:00 to CET UTC+01:00)
> * Processor state: Running continuously before and after the DST transition
> h2. Observed Behavior
> On Monday, October 26, 2026, the processor generated two FlowFiles:
> ||Date||Time||Timezone||Event||
> |2026-10-26|19:30:02|CET|Unexpected execution|
> |2026-10-26|20:30:00|CET|Expected execution|
> Both events originated from the same GenerateFlowFile processor.
> h2. Expected Behavior
> The processor should execute only once per weekday at 20:30 Europe/Amsterdam
> local time, regardless of DST transitions.
> The DST transition should not result in an additional execution on the
> following day.
> h2. Steps to Reproduce
> # Configure a GenerateFlowFile processor with CRON-driven scheduling.
> # Set the CRON expression to {{{}0 30 20 ? * MON-FRI{}}}.
> # Use the Europe/Amsterdam timezone.
> # Start the processor before the autumn DST transition.
> # Leave the processor running continuously through the transition.
> # Observe the processor executions on the first Monday after the DST
> transition.
> h2. Possible Root Cause
> The {{CronSchedulingAgent}} implementation appears to use
> {{java.time.OffsetDateTime}} for calculating scheduled execution times.
> {{OffsetDateTime}} represents a fixed UTC offset rather than a timezone with
> daylight saving transition rules.
> A schedule calculated before the DST transition may retain the previous UTC
> offset, causing the first execution after the transition to occur one hour
> earlier than intended.
> After that execution, the scheduler may calculate the next occurrence using
> the new UTC offset, resulting in a second execution on the same day.
> This would explain the two observed executions:
> * 20:30 CEST (UTC+02:00), corresponding to 19:30 CET after the transition.
> * 20:30 CET (UTC+01:00), corresponding to the intended local execution time.
> This is a suspected root cause based on the available source code and
> observed behavior. It has not yet been confirmed against the exact NiFi 2.9.0
> release implementation.
> Relevant source file:
> {{nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java}}
> h2. Impact
> This behavior may cause CRON-driven processors to execute more than once on
> the first scheduled day after an autumn DST transition.
> For scheduled workflows, duplicate executions may result in repeated data
> processing or duplicate downstream operations.
> h2. Additional Notes
> The processor remained running across the DST transition. The issue was
> observed through two distinct FlowFile creation events approximately one hour
> apart.
> No independent reproduction in a test environment has yet been performed.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)