Matt Gilman created NIFI-16403:
----------------------------------

             Summary: Add alignment, Remote Process Group refresh, and 
provenance replay to connector troubleshooting
                 Key: NIFI-16403
                 URL: https://issues.apache.org/jira/browse/NIFI-16403
             Project: Apache NiFi
          Issue Type: Task
          Components: Core UI
            Reporter: Matt Gilman


h2. Background

Several diagnostic and layout operations remain unavailable on the connector 
canvas during troubleshooting. Users need to align selected components, refresh 
Remote Process Group metadata, and replay eligible provenance events without 
leaving the connector context.

These operations must be available only while troubleshooting is active and 
must preserve permissions, revisions, polling safety, and error handling.

h2. Goals

* Add horizontal and vertical alignment for selected canvas components.
* Add asynchronous Remote Process Group refresh.
* Allow provenance replay only during troubleshooting.
* Integrate these operations with connector canvas commands, context menus, 
state, and effects.
* Preserve existing read-only behavior outside troubleshooting.

h2. Scope

h3. Component Alignment

* Add an Align context-menu submenu with horizontal and vertical options.
* Show alignment actions only while canvas editing is enabled.
* Require at least two eligible positionable components.
* Exclude connections and unsupported selections.
* Calculate target positions from the selected components' visual bounds.
* Preserve each component's current revision.
* Dispatch one typed bulk-position update.
* Update attached connection geometry consistently where required.
* Reuse the existing bulk position persistence and failure-recovery behavior.

Horizontal alignment centers selected components on the selection's Y-axis 
center line.

Vertical alignment centers selected components on the selection's X-axis center 
line.

h3. Remote Process Group Refresh

* Add Refresh remote to the context menu for eligible Remote Process Groups.
* Require active troubleshooting, read permission, and a known flow-refreshed 
timestamp.
* Start the refresh through the connector-scoped API.
* Store the Remote Process Group identifier and original refresh timestamp.
* Poll until the returned flow-refreshed timestamp changes.
* Display temporary refreshing state while polling.
* Replace the Remote Process Group entity with the refreshed response.
* Reload related connections after completion when endpoint metadata may have 
changed.
* Stop polling on completion, error, navigation, canvas reset, or explicit 
teardown.
* Prevent multiple polling intervals from running for the same refresh session.

h3. Provenance Replay

* Propagate whether replay is allowed from the current connector 
troubleshooting state.
* Allow replay only when both conditions are true:
** The provenance event reports replayAvailable.
** The connector is currently in TROUBLESHOOTING.
* Apply the same replay gating to provenance preview and full provenance 
listing flows.
* Preserve connector canvas back navigation.
* Submit replay using the event identifier and cluster node identifier.
* Display confirmation after successful submission.
* Surface replay failures through existing error handling.
* Hide or disable replay outside troubleshooting mode.

h3. State and Effects

* Add typed actions and state for Remote Process Group refresh details and 
polling status.
* Add selectors for the active refresh session.
* Add alignment command dispatch through the connector canvas command layer.
* Ensure refresh responses cannot update a later or unrelated canvas session.
* Clear refresh state during canvas reset.
* Preserve immutable collection updates.

h3. Tests

Add coverage for:

* Alignment visibility and eligibility.
* Horizontal and vertical target calculations.
* Mixed and unsupported selections.
* Revision-preserving bulk updates.
* Remote Process Group refresh visibility and permissions.
* Polling startup, repeated ticks, completion, failure, and teardown.
* Duplicate polling-start protection.
* Stale refresh-session isolation.
* Related connection reload after refresh.
* Provenance replay availability during troubleshooting.
* Replay suppression outside troubleshooting.
* Replay success and failure behavior.
* Back-navigation preservation.

h2. Out of Scope

* General component run-status operations.
* Processor advanced UI.
* Controller Service management.
* Changes to Remote Process Group backend refresh semantics.
* Changes to provenance replay backend semantics.
* Alignment on the legacy flow-designer canvas.

h2. Acceptance Criteria

* Horizontal and vertical alignment are available only for valid 
troubleshooting selections.
* Alignment requests preserve component identifiers, types, positions, and 
revisions.
* Unsupported selections do not expose alignment actions.
* Eligible Remote Process Groups expose Refresh remote during troubleshooting.
* Refresh polling stops when the flow-refreshed timestamp changes.
* Only one polling interval remains active for a refresh session.
* Polling and in-flight requests stop when the canvas is reset or destroyed.
* Refreshed entities and related connections are reconciled with state.
* Provenance replay is available only when the event is replayable and 
troubleshooting is active.
* Replay is unavailable outside troubleshooting even when the event reports 
replayAvailable.
* Success and failure feedback uses existing application mechanisms.
* Frontend lint, strict type-check, unit tests, and production build pass.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to