pvillard31 opened a new pull request, #10630: URL: https://github.com/apache/nifi/pull/10630
# Summary NIFI-15299 - Improve logic for disabling invalid controller services ### Issue 1: Disabling a Controller Service fails when referencing components exist When a Controller Service becomes invalid after a NiFi restart, attempting to disable the Controller Service from the UI fails with an error stating it cannot be disabled because referencing components are still running. The UI reports that it stopped the referencing processors, but the actual stop operation was not performed. ### Issue 2: Disabling an invalid Controller Service in ENABLING state takes too long When a Controller Service is stuck in the `ENABLING` state due to validation failures, disabling it takes an excessively long time (up to 10 minutes) because the disable operation waits for the scheduled enable retry task to detect the disable request. ### Fix for Issue 1 **Root Cause:** There was a condition mismatch - the code checking for components to stop only looked for `RUNNING` state, while the validation logic also considered `STARTING` state as "active". Processors referencing an invalid Controller Service can be stuck in `STARTING` state. **Changes:** 1. **`StandardControllerServiceReference.java`** - Updated `isRunning()` method to consider both `RUNNING` and `STARTING` states when determining if a component is active. 2. **`StandardControllerServiceProvider.java`** - Updated `unscheduleReferencingComponents()` to stop components in both `RUNNING` and `STARTING` states. 3. **`StandardControllerServiceDAO.java`** - Updated `updateControllerService()` to automatically stop all referencing schedulable components and disable referencing Controller Services before disabling the target Controller Service. ### Fix for Issue 2 **Root Cause:** When disabling a Controller Service from `ENABLING` state, the code returned a future that would only complete when the scheduled enable retry task ran (which could be up to 10 minutes away due to exponential backoff). **Changes:** 1. **`StandardControllerServiceNode.java`** - Updated `disable()` method to immediately schedule the transition to `DISABLED` state when transitioning from `ENABLING`, rather than waiting for the enable retry task. # Tracking Please complete the following tracking steps prior to pull request creation. ### Issue Tracking - [ ] [Apache NiFi Jira](https://issues.apache.org/jira/browse/NIFI) issue created ### 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 `./mvnw clean install -P contrib-check` - [ ] JDK 21 - [ ] JDK 25 ### Licensing - [ ] New dependencies are compatible with the [Apache License 2.0](https://apache.org/licenses/LICENSE-2.0) according to the [License Policy](https://www.apache.org/legal/resolved.html) - [ ] New dependencies are documented in applicable `LICENSE` and `NOTICE` files ### Documentation - [ ] Documentation formatting appears as expected in rendered files -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
