Skip to content

NIFI-10976 Add Previous Cluster State Provider configuration#7235

Merged
bbende merged 1 commit into
apache:mainfrom
exceptionfactory:NIFI-10976
May 10, 2023
Merged

NIFI-10976 Add Previous Cluster State Provider configuration#7235
bbende merged 1 commit into
apache:mainfrom
exceptionfactory:NIFI-10976

Conversation

@exceptionfactory
Copy link
Copy Markdown
Contributor

Summary

NIFI-10976 Adds a Previous Cluster State Provider to support migrating from one Cluster State Provider implementation to another.

The new Previous Cluster Provider property enables conditional transfer of Cluster State from a previous Cluster State Provider to the configured Cluster State Provider. This approaches supports migration scenarios such as moving from ZooKeeper to Kubernetes ConfigMaps or Redis. The implementation is a one-way operation that copies from the Previous Provider to the Current Provider when the Current Provider does not have any state information. After the initial state transfer, the framework ignores the Previous Provider when the Current Provider contains stored informaiton.

Changes include new methods on the StateProvider interface to support enumeration of stored Component Identifiers. The default interface methods indicate that enumeration is not supported, so State Provider implementations must implement both new methods to support transferring state from a previous provider.

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 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 mvn clean install -P contrib-check
    • JDK 11
    • JDK 17

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

- Added methods to enumerate Stored Component Identifiers on State Provider interface and implementations
- Added nifi.state.management.provider.cluster.previous to nifi.properties
- Updated State Manager Provider to restore Cluster State from Previous Cluster Provider
- Updated Configuring State Providers documentation for new property
@bbende bbende self-requested a review May 10, 2023 18:16
Copy link
Copy Markdown
Contributor

@bbende bbende left a comment

Choose a reason for hiding this comment

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

Code looks good and was able to verify using this new property to migrate state from a previous ZK to a new ZK, and everything worked as described.

@bbende bbende merged commit e302f2a into apache:main May 10, 2023
iadamcsik pushed a commit to iadamcsik/nifi that referenced this pull request Oct 22, 2025
- CDPDFX-6285: Passing through flow designer id during component creation (apache#106)
- CDPDFX-7171 Correcting resolution of VCI for scheduled state changes (apache#108)
- CDPDFX-7192 Add lastModifier field to FlowChangeEvent, set lastModifier when publishing state change events (apache#109)
- CDPDFX-6285 Use flow designer id in flow control event handler
- NIFI-10976 Added Previous Cluster State Provider configuration (apache#7235)
  - Added methods to enumerate Stored Component Identifiers on State Provider interface and implementations
  - Added nifi.state.management.provider.cluster.previous to nifi.properties
  - Updated State Manager Provider to restore Cluster State from Previous Cluster Provider
  - Updated Configuring State Providers documentation for new property
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants