You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Pierre Villard (Jira)" <ji...@apache.org> on 2025/08/29 15:52:00 UTC
[jira] [Resolved] (NIP-9) Possibility to drop individual keys in component state
[ https://issues.apache.org/jira/browse/NIP-9?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pierre Villard resolved NIP-9.
------------------------------
Resolution: Fixed
> Possibility to drop individual keys in component state
> ------------------------------------------------------
>
> Key: NIP-9
> URL: https://issues.apache.org/jira/browse/NIP-9
> Project: NiFi Improvement Proposal
> Issue Type: Improvement
> Reporter: Pierre Villard
> Assignee: Pierre Villard
> Priority: Major
>
> h3. Motivation
> Currently a component can specify if state will be stored or not using the annotation
> {code:java}
> @Stateful(scopes = Scope.CLUSTER, description = "xyz") {code}
> And the state is a Map<String, String>.
> Through the UI / APIs, it is possible to get the state using:
> {code:java}
> GET .../{id}/state{code}
> and to clear the state using:
> {code:java}
> POST .../{id}/state/clear-requests{code}
> Note that for the above request, we accept a ComponentStateEntity for the payload but this is completely ignored at the moment in the backend code and the UI always sends {} for the payload.
> In some cases, it would be useful to provide the option to the user to remove only a specific key from the state and not clear the entirety of the state. However, this is risky and highly depends on the code of the component and how the state is used/managed.
> This is why this feature should NOT be enabled by default, and could be turned on via a new attribute of the annotation in the code of the component. This would be the responsibility of the developer to know if this is OK to have the option of removing individual keys from the state while the component is stopped.
> h3. Scope
> Add
> {code:java}
> boolean dropStateKeySupported() default false; {code}
> to org.apache.nifi.annotation.behavior.Stateful
> Once we have this API change, some straight forward changes would be required in the classes where we currently implement clearing the state for a given component ID by also passing the component state entity up until StandardComponentStateDAO class.
> For components where this improvement is desired, the annotation would become something like:
> {code:java}
> @Stateful(scopes = Scope.CLUSTER, description = "xyz", dropStateKeySupported = true) {code}
> h3. Compatibility
> Fully backward compatible.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)