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]

Reply via email to