[ 
https://issues.apache.org/jira/browse/NIFI-16489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18133218#comment-18133218
 ] 

ASF subversion and git services commented on NIFI-16489:
--------------------------------------------------------

Commit f3a773b2136e885be0230153137190b577481f1f in nifi's branch 
refs/heads/main from Matt Gilman
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=f3a773b2136 ]

NIFI-16489: Reconcile connector canvas after cluster connection changes (#11842)

Preserve authoritative snapshot reconciliation across failed or cancelled loads 
while retaining optimistic in-flight mutations.

This closes #11842

> Reconcile connector canvas state after cluster connection changes
> -----------------------------------------------------------------
>
>                 Key: NIFI-16489
>                 URL: https://issues.apache.org/jira/browse/NIFI-16489
>             Project: Apache NiFi
>          Issue Type: Task
>          Components: Core UI
>            Reporter: Matt Gilman
>            Assignee: Matt Gilman
>            Priority: Major
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> h2. Background
> After NiFi cluster connection state changes, a newly loaded flow snapshot can 
> contain lower revisions or a different authoritative component set than the 
> connector canvas currently holds.
> The legacy flow designer propagates connectedStateChanged through its load 
> path so revision reconciliation can accept the replacement snapshot. The 
> connector canvas does not yet provide an equivalent complete contract.
> Optimistic added and removed caches introduce an additional risk. If they 
> continue filtering a cluster-reconnect snapshot, locally retained entities or 
> deletion tombstones can mask authoritative server state indefinitely.
> h2. Goals
> * Propagate cluster connection-state changes through connector flow loading.
> * Treat the first snapshot after a cluster connection-state change as 
> authoritative.
> * Replace lower-revision local entities when required.
> * Prevent optimistic caches from masking the authoritative snapshot.
> * Preserve normal durable reconciliation for ordinary polling.
> * Keep cluster-state handling scoped to the current connector and process 
> group.
> h2. Scope
> h3. Cluster State Propagation
> * Observe the shared cluster connection-state change signal.
> * Capture its value when loading connector flow.
> * Reset or consume the signal using the established one-shot behavior.
> * Include connectedStateChanged in the typed load-success contract.
> * Prevent a state change from one canvas session from leaking into another 
> connector or process group.
> h3. Authoritative Snapshot Reconciliation
> When connectedStateChanged is true:
> * Accept server entities even when their revisions are lower than local 
> revisions.
> * Use the server component set as authoritative.
> * Do not retain locally added entities that are absent from the snapshot.
> * Do not suppress server entities using stale removal tombstones.
> * Clear added and removed reconciliation caches after applying the snapshot.
> * Reconcile connections and their endpoints from the same authoritative 
> snapshot.
> When connectedStateChanged is false:
> * Preserve normal optimistic reconciliation.
> * Retain creation and deletion tracking until ordinary snapshots acknowledge 
> the corresponding mutations.
> * Continue protecting the canvas from stale polling responses.
> h3. Tests
> Add coverage for:
> * Propagation of connectedStateChanged through effects and actions.
> * Acceptance of a lower-revision authoritative entity.
> * Removal of a locally cached added entity absent from the authoritative 
> snapshot.
> * Restoration of an entity masked by a stale removal tombstone.
> * Authoritative replacement of connections and endpoints.
> * Clearing both reconciliation caches.
> * One-shot consumption of the cluster-state signal.
> * Cross-connector and cross-process-group isolation.
> * Unchanged optimistic behavior during ordinary polling.
> * Initial-load and refresh-failure behavior.
> h2. Dependencies
> * NIFI-16447
> h2. Out of Scope
> * Changes to NiFi cluster lifecycle semantics.
> * Backend flow synchronization changes.
> * General component creation or deletion.
> * Migration of the legacy flow-designer canvas.
> h2. Acceptance Criteria
> * Connector flow loading carries the cluster connection-state change signal.
> * The first post-change snapshot can replace entities with lower revisions.
> * The authoritative snapshot is not filtered by optimistic add/remove caches.
> * Added and removed caches are cleared after authoritative reconciliation.
> * Ordinary polling retains its stale-response protections.
> * Cluster-state changes cannot affect an unrelated connector or process group.
> * Unit tests cover lower revisions, added entities, removed entities, 
> connections, cache clearing, and ordinary polling.
> * Frontend lint, strict type-check, unit tests, and production build pass.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to