Matt Gilman created NIFI-16400:
----------------------------------

             Summary: Add troubleshooting route guards, banners, and live state 
synchronization
                 Key: NIFI-16400
                 URL: https://issues.apache.org/jira/browse/NIFI-16400
             Project: Apache NiFi
          Issue Type: Task
          Components: Core UI
            Reporter: Matt Gilman


h2. Background

Advanced connector pages and canvas editing are valid only while a connector is 
in TROUBLESHOOTING. The frontend must enforce that requirement for direct 
navigation, clearly identify the active mode, and react when the connector 
state changes during an open session.

Without synchronized connector-state polling and route protection, users can 
remain on an editing page after troubleshooting ends or access an advanced 
route through a stale deep link.

h2. Goals

* Guard troubleshooting-only routes.
* Display a persistent troubleshooting banner on affected pages.
* Keep the current connector entity synchronized with backend state.
* Enable or disable canvas editing when troubleshooting starts or ends.
* Refresh affected data after troubleshooting ends.
* Fail closed when connector state cannot be confirmed.

h2. Scope

h3. Troubleshooting Route Guard

* Add a functional route guard for troubleshooting-only connector routes.
* Read the connector identifier and process-group identifier from inherited 
route parameters.
* Use a matching connector entity from state when available.
* Fetch the connector entity when state is missing or belongs to another 
connector.
* Allow activation only when the connector is in TROUBLESHOOTING.
* Return a UrlTree redirect instead of cancelling navigation.
* Support contextual redirect destinations for canvas and Controller Service 
routes.
* Redirect safely when route parameters are missing or the connector request 
fails.
* Store a successfully fetched connector entity for downstream resolvers and 
components.

h3. Guarded Routes

Apply the guard to advanced editing routes, including:

* Processor advanced UI.
* Controller Service advanced UI.
* Future per-component editing routes that require troubleshooting mode.

Each guarded route must declare the appropriate in-context redirect destination.

h3. Troubleshooting Banners

* Display a non-dismissible caution banner on the connector canvas while 
troubleshooting is active.
* Display the same troubleshooting context on the connector-scoped Controller 
Services page.
* Explain that changes are limited to the troubleshooting session and may be 
reverted when the session ends.
* Hide the banner outside troubleshooting mode.
* Preserve existing error-banner behavior.

h3. Connector Entity Synchronization

* Load the connector entity when the connector canvas initializes.
* Refresh the connector entity alongside connector flow polling.
* Start connector-entity polling on sibling advanced pages where the canvas is 
not mounted.
* Stop polling when the page is destroyed.
* Avoid duplicate polling loops and stale cross-connector state.

h3. State Transition Handling

React to connector state edges for the same connector:

* Initial load: configure canvas editing from the current connector state.
* Enter troubleshooting: enable editing without unnecessarily reloading the 
flow.
* End troubleshooting: disable editing, reload the current flow, and show 
confirmation.
* Steady state: avoid redundant state updates while correcting any canvas 
configuration drift.
* Connector change: treat the new connector as an initial load instead of a 
troubleshooting transition.

User-driven refresh after ending troubleshooting must not be dropped by polling 
throttles.

h3. Tests

Add coverage for:

* Warm-state guard activation.
* Cold deep-link connector loading.
* Redirects for non-troubleshooting connectors.
* Context-specific redirect destinations.
* Missing route parameters.
* Connector loading failures.
* Banner visibility.
* Initial editing configuration.
* Enter and end transition edges.
* Flow reload after ending troubleshooting.
* Cross-connector navigation.
* Polling startup, refresh, and teardown.
* Avoidance of redundant steady-state updates.

h2. Out of Scope

* Component run-status operations.
* Processor advanced UI implementation.
* Controller Service mutation operations.
* Alignment, Remote Process Group refresh, and provenance replay.
* Changes to backend troubleshooting lifecycle behavior.
* Changes to connector action availability.

h2. Acceptance Criteria

* Troubleshooting-only routes cannot activate unless the connector is in 
TROUBLESHOOTING.
* Cold deep links validate connector state through one backend request.
* Denied navigation redirects to the appropriate canvas or Controller Services 
page.
* Connector loading failures deny access and surface through existing error 
handling.
* The connector canvas and Controller Services page display a troubleshooting 
banner only while the mode is active.
* Canvas editing is enabled only while troubleshooting is active.
* Ending troubleshooting disables editing and refreshes the current flow.
* Connector state polling keeps open pages synchronized with backend changes.
* Polling stops when the owning page is destroyed.
* Cross-connector navigation does not produce false enter or exit transitions.
* Existing selection, navigation, polling, and error behavior remains unchanged.
* 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