[ 
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)

Reply via email to