NIFI-15825: Adding support for controller services and queue operations in the connector canvas#11187
Merged
rfellows merged 1 commit intoapache:mainfrom May 5, 2026
Merged
Conversation
Contributor
|
Will review... |
rfellows
approved these changes
May 5, 2026
…anvas. - Adding support for queue operations in the connector canvas. NIFI-15825: Code clean up. - Fixed minor issue to prevent queue listing skeleton from flashing on retry after error loading.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds support for working with controller services and performing queue operations from the connector canvas in the NiFi UI. Promotes the empty-queue NgRx state slice to a location shared by the flow designer and the connector canvas so both surfaces drive the same drop-request flow.
Changes
Connector canvas — context menu
Controller Services,Empty All Queues,Drain, andCancel Drain(alongside the existingRefreshandLeave Group).Controller ServicesandEmpty All Queuesfor process groups, andList QueueandEmpty Queuefor connections.fa fa-listfor Controller Services).DrainandCancel Drainare gated on connector permissions and the runtime'sallowedActionsset, and disable while the connector is being saved.Controller services view (read-only)
ConnectorControllerServicesComponentrooted at/connectors/{connectorId}/canvas/{processGroupId}/controller-services, deep-linkable to a specific service.controller-service-table. To support a read-only entry point without mutating entity permissions:readOnlyinput oncontroller-service-tablethat gates the row action menu down toView Configuration,View State, andView Documentation.readonly?: booleanflag onEditControllerServiceDialogRequest. When set,EditControllerServiceenters view-only mode regardless of the user's permissions or the service's run status.connector-controller-services— actions, reducer, effects, selectors) handles loading, selection, and dialog wiring.navigateToControllerServices({ processGroupId })and usesBackNavigationto return to the originating canvas.Queue operations — shared empty-queue state
flow-designer/state/queueslice tostate/empty-queue. The flow designer and the connector canvas now dispatch the same actions through a single shared slice.queueEmptiedaction carries aCanvasActionSourceso each surface filters on the source and only refreshes its own view.submitEmptyQueuesRequestSuccess); the shared success effect listens to both the singular and bulk forms and routes to eitherdeleteEmptyQueueRequestorstartPollingEmptyQueueRequestdepending on whether the drop request is finished.Empty Queue,Empty All Queues,List Queue,Drain, andCancel Drainare wired through this slice.Cleanup and hardening (second commit)
A follow-up commit addresses minor items grouped by theme:
EmptyQueueStateclears the unused identifier on submit so subsequent polling/deletion can never run against a staleconnectionIdorprocessGroupId.processGroupId!non-null assertions inpollEmptyQueueRequest$anddeleteEmptyQueueRequest$with explicit guards that dispatchemptyQueueApiErrorif neither id is present.hasAttemptedLoadtoConnectorControllerServicesStateso the controller services skeleton is only shown on the very first load — retries after a failed initial load no longer re-flash the skeleton.navigateToControllerServicesto requireprocessGroupIdand dropped the unreachable route fallback in the effect.connector-controller-services.navigateBackToConnectorCanvasaction and effect.EmptyQueueEffects.readonly-derivation spec forEditControllerServicecovering the explicit flag, missing write permission, and non-DISABLED run status.hasAttemptedLoad.Follow-ups
The connector canvas's
List Queueaction navigates to the existing/queue/{connectionId}page. That page's queue listing relies on the standardnifi-api/flowfile-queues/{id}/...endpoints; full functionality for connections inside a connector's runtime depends on those endpoints resolving in the connector context and is tracked separately.