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/20 16:23:59 UTC
[PR] NIFI-16447: Align reusable canvas visibility, interaction, and connec… [nifi]
mcgilman opened a new pull request, #11822:
URL: https://github.com/apache/nifi/pull/11822
…tor mutations
Classify viewport visibility in each renderer so off-screen components skip their detail markup when the viewport changes, and drop the unused canvas pan path. Evaluate selection and edit gates at event time, reject processor destinations from the entity input requirement, and persist connector canvas edits through typed revision-safe actions, including a port dialog for process-group and remote-process-group reconnects.
# Summary
[NIFI-16447](https://issues.apache.org/jira/browse/NIFI-16447)
Completes reusable canvas interaction and rendering support for the Connector Canvas.
- Classifies component visibility within each renderer, avoiding unnecessary detail rendering for off-screen components.
- Uses current drag positions for visibility and box-selection calculations.
- Evaluates selection, editing, and disabled-state gates when interactions occur.
- Adds revision-safe persistence for connector canvas mutations, including moves, resizing, deletion, reconnection, and bend updates.
- Supports connection creation and reconnection involving process groups and remote process groups.
- Preserves self-loop and parallel-connection bend geometry.
- Reconciles optimistic mutations with polling while protecting against stale responses, navigation races, and transient load failures.
- Validates processor connection destinations using the entity input requirement.
- Adds focused unit and effect coverage for rendering, selection, connection geometry, mutation persistence, and recovery behavior.
# 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 contains [commits signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) 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
### Frontend
- `nifi:lint` passed
- `nifi:test` passed: 339 test files and 3,189 tests
- `nifi:build:production` passed
- `git diff --check upstream/main` passed
### Build
- [ ] Build completed using `./mvnw clean install -P contrib-check`
- [ ] JDK 21
- [ ] JDK 25
### Licensing
No new dependencies were added.
- [ ] 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
No documentation changes were required.
- [ ] 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: issues-unsubscribe@nifi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] NIFI-16447: Align reusable canvas visibility, interaction, and connec… [nifi]
Posted by "rfellows (via GitHub)" <gi...@apache.org>.
rfellows commented on code in PR #11822:
URL: https://github.com/apache/nifi/pull/11822#discussion_r4329922090
##########
nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/connectors/state/connector-canvas/connector-canvas.reducer.ts:
##########
@@ -71,21 +124,43 @@ export const connectorCanvasReducer = createReducer(
processGroupId,
parentProcessGroupId,
breadcrumb,
- labels,
- funnels,
- inputPorts,
- outputPorts,
- remoteProcessGroups,
- processGroups,
- processors,
- connections,
+ labels: processComponentCollection(labels, state.labels, state.addedCache, state.removedCache),
+ funnels: processComponentCollection(funnels, state.funnels, state.addedCache, state.removedCache),
+ inputPorts: processComponentCollection(inputPorts, state.inputPorts, state.addedCache, state.removedCache),
+ outputPorts: processComponentCollection(
+ outputPorts,
+ state.outputPorts,
+ state.addedCache,
+ state.removedCache
+ ),
+ remoteProcessGroups: processComponentCollection(
+ remoteProcessGroups,
+ state.remoteProcessGroups,
+ state.addedCache,
+ state.removedCache
+ ),
+ processGroups: processComponentCollection(
+ processGroups,
+ state.processGroups,
+ state.addedCache,
+ state.removedCache
+ ),
+ processors: processComponentCollection(processors, state.processors, state.addedCache, state.removedCache),
+ connections: processComponentCollection(
+ connections,
+ state.connections,
+ state.addedCache,
+ state.removedCache
+ ),
+ addedCache: [],
+ removedCache: [],
Review Comment:
**Non-blocking; a follow-up is reasonable:** `removedCache` protects optimistically moved components from the first stale flow response, but this clears every tombstone after that response even if the move request remains active. A second refresh could then restore the component in its source group, and `moveCanvasComponentsSuccess` only clears `saving`.
The connector canvas currently keeps `canEdit` disabled, so this sequence cannot yet be exercised through the production UI. Before editing is enabled, could we either retain each tombstone until a post-move snapshot confirms that the component is absent, or track this reconciliation case for the effort that enables editing? A reducer test covering `move → stale load → stale load → move success` would capture the case.
--
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
Re: [PR] NIFI-16447: Align reusable canvas visibility, interaction, and connec… [nifi]
Posted by "rfellows (via GitHub)" <gi...@apache.org>.
rfellows commented on PR #11822:
URL: https://github.com/apache/nifi/pull/11822#issuecomment-6296820587
Will review
--
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
Re: [PR] NIFI-16447: Align reusable canvas visibility, interaction, and connec… [nifi]
Posted by "rfellows (via GitHub)" <gi...@apache.org>.
rfellows merged PR #11822:
URL: https://github.com/apache/nifi/pull/11822
--
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