You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "mcgilman (via GitHub)" <gi...@apache.org> on 2026/10/06 13:01:08 UTC

Re: [PR] NIFI-16283 Support changing Connector versions [nifi]

mcgilman commented on code in PR #11677:
URL: https://github.com/apache/nifi/pull/11677#discussion_r4195565071


##########
nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/connectors/ui/connector-table/connector-table.component.ts:
##########
@@ -157,6 +160,24 @@ export class ConnectorTable {
         return isConnectorActionAllowed(entity, 'PURGE_FLOWFILES');
     }
 
+    canChangeVersion(entity: ConnectorEntity): boolean {
+        const versionChangeEligibleStates = [
+            ConnectorState.STOPPED,
+            ConnectorState.UPDATED,
+            ConnectorState.UPDATE_FAILED
+        ];
+        const state = entity.component.state as ConnectorState;
+        const noActiveThreads = entity.status?.aggregateSnapshot?.activeThreadCount === 0;
+        return (
+            this.canRead(entity) &&
+            this.canModify(entity) &&
+            !this.saving &&
+            versionChangeEligibleStates.includes(state) &&
+            (state === ConnectorState.STOPPED || noActiveThreads) &&
+            entity.component.multipleVersionsAvailable === true
+        );

Review Comment:
   **Medium — drive Change Version from availableActions**
   
   `canChangeVersion` reimplements the reload rule in `verifyCanReload()` / `isStopped()`: `STOPPED`, or `UPDATED` / `UPDATE_FAILED` with no active threads. Every other item in this menu asks `isConnectorActionAllowed` and reads `component.availableActions`, which already carries `allowed` and `reasonNotAllowed`.
   
   Please add a `CHANGE_VERSION` action from `StandardConnectorNode.getAvailableActions()`, allowed exactly when `verifyCanReload()` would succeed, and switch this method to `isConnectorActionAllowed(entity, 'CHANGE_VERSION')`. That gives the UI, the CLI, and any other client one definition of when a version change is legal, plus a reason when it is not.
   
   `multipleVersionsAvailable` is still the right signal that another bundle with the same group and artifact is installed; the node does not see that inventory. If the menu should depend on a single action, `DtoFactory` can set this action's `allowed` to false when `multipleVersionsAvailable` is false. The read/modify permission checks and the listing `saving` flag should stay here.



-- 
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: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org