Skip to content

NIFI-15519 - Skip flow save during shutdown to preserve processor auto-resume states#10864

Merged
exceptionfactory merged 3 commits intoapache:mainfrom
pvillard31:NIFI-15519
Feb 6, 2026
Merged

NIFI-15519 - Skip flow save during shutdown to preserve processor auto-resume states#10864
exceptionfactory merged 3 commits intoapache:mainfrom
pvillard31:NIFI-15519

Conversation

@pvillard31
Copy link
Contributor

Summary

NIFI-15519 - Skip flow save during shutdown to preserve processor auto-resume states

OK, thanks to the reporter and the data shared with me, I was able to track down the issue. At a high level, during graceful shutdown, SaveReportingTask can execute after FlowController.shutdown() has already set all processors' desired state to STOPPED.

If this happens, VersionedDataflowMapper maps the STOPPED state to ENABLED in flow.json.gz. On the next startup, VersionedFlowSynchronizer reads ENABLED (not RUNNING) and does not add the processors to startConnectablesAfterInitialization, so onFlowInitialized() starts zero components.

This is a race condition: the SaveReportingTask runs on a scheduled executor every 500ms and also runs explicitly at the end of StandardFlowService.stop(). If a save request (saveHolder) is pending when shutdown begins, the save executes after processors are stopped, overwriting the previously saved RUNNING states with ENABLED.

The issue might happen more frequently when using flow registry versioning which triggers frequent background saveFlowChanges() calls, making it highly likely that a save is pending at shutdown time.

The system test easily reproduces the issue and the test would fail without the fix.

Tracking

Please complete the following tracking steps prior to pull request creation.

Issue Tracking

Pull Request Tracking

  • Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
  • Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000
  • Pull request contains commits signed with a registered key indicating Verified status

Pull Request Formatting

  • Pull Request based on current revision of the main branch
  • Pull Request refers to a feature branch with one commit containing changes

Verification

Please indicate the verification steps performed prior to pull request creation.

Build

  • Build completed using ./mvnw clean install -P contrib-check
    • JDK 21
    • JDK 25

Licensing

  • New dependencies are compatible with the Apache License 2.0 according to the License Policy
  • New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

  • Documentation formatting appears as expected in rendered files

@pvillard31 pvillard31 added the bug label Feb 6, 2026
Copy link
Contributor

@exceptionfactory exceptionfactory left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for tracking this down @pvillard31, the adjustments to the save process on shutdown make sense, and the additional test is helpful. +1 merging

@exceptionfactory exceptionfactory merged commit d1fa36a into apache:main Feb 6, 2026
14 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants