David/Pierre,

Thank you for the prompt and thoughtful replies.

Reset Support/Semantics

I think lock/reset support could be considered and I would agree that might shift the naming semantics.  My original intent is that immutable would be you set once and the connector would need to be recreated to change.  I feel what is proposed fits nicely with the definition of immutable "unable to be changed, altered, or modified over time".  If we want to consider allowing this to be reset I would modify my proposal to call this ConnectorPropertyDescriptor lockable as David suggests.

.lockable(boolean isLockable)

From there we could document that setting lock to true would implicitly mean it is locked if the connector ever reaches the RUNNING stage.  Then unlock could be considered a connector action to reset the lock.  The semantics in the ConnectorNode persistence could be changed then to contain a list of locked properties (say lockedConnectorProperties ) on the ConnectorNode which could be added and removed individually or in bulk by API/Action.

The idea of allowing a lock to apply to different stages is interesting but I would be hesitant to introduce that concept in the initial go.  For example what phases, currently represented by the ConnectorState enum would we support?  Perhaps "UPDATED" might be a good fit.  Then then api could be enhance to accept a list of ConnectorStates that would trigger the lock.

.lockable(boolean isLockable, List<ConnectorState> triggerState)

Then we would need the persistence of the lockedConnectorProperties to be updated when the connector state transitioned.  So the current design could evolve to either of these.  However the other states are transitional and don't seem to provide a lot of meeting over the life of the connector (DRAINING, PURGING, TROUBLESHOOTING).  So at this point I think this might be too early for such a concept and we'd want to defer that decision to later based on usage.  Like what should TROUBLESHOOTING state do?  Should that implicitly unlock?  I'm not sure I have a good understanding of the usecases to tackle that question yet.

I'm open to both suggestions but both are a bit beyond my original intent as immutable means just that it is set once and never changed.  Although just going through this though experiment on locking leads me to believe that the persistence proposed in the NIP should change regardless to list out properties that are now set as immutable rather than simply tracking hasBeenStarted on the ConnectorNode.  But if we want these additional features (lock/reset) then I would agree lets tweak the semantics as mentioned above.

Sincerely,

Bob

On 7/23/2026 11:16 AM, David Handermann wrote:
Bob,

Thanks for initiating the discussion. Based on Pierre's comment, and
considering the general notion of Connector Properties, it would be
helpful to consider the naming semantics a bit more.

Immutable strongly connotes inability to change, whereas it seems the
more specific goal is to support a set-once strategy. Rather than
immutable, perhaps something more along the lines of a Property Status
would be helpful. The status could be LOCKED or UNLOCKED as a way to
communicate whether it could be changed. Those may not be the best
semantic names, so I'm open to ideas.

Another approach might be something like indicating the phase or stage
at which a property can be configured. Such as initialization versus
any.

The core concept certainly sounds useful, so I'm in favor of the goal,
but would like to see some iteration on the particulars before final
approval.

Regards,
David Handermann

On Thu, Jul 23, 2026 at 10:26 AM Pierre Villard
<[email protected]> wrote:
Hi Bob, thanks for the proposal.

I definitely do see the value of making sure some properties cannot be
changed after the connector starts. I guess that with this change we
would be saying that the connector has to be deleted and recreated to
make a configuration change for such properties. I imagine that in the
future we may want to expose a way to "reset" the connector so that it
does not need to be deleted. And, in this case, the connector could
have some code to take the appropriate actions in such a scenario.

Definitely a +1 for the NIP.

Thanks,
Pierre

Le jeu. 23 juil. 2026 à 14:56, Bob Paulin <[email protected]> a écrit :
Hi,

I'd like to raise a proposal to add an  immutable option to
ConnectorPropertyDescriptor.  I've included details in a JIRA [1] for
review by the community.   If the proposal is of interest to the PMC I'd
like to request a sponsor per [2] since I am neither PMC or a committer
on the project.  Thank you for your consideration!


Sincerely,

Bob Paulin

[1] https://issues.apache.org/jira/browse/NIP-36

[2]
https://cwiki.apache.org/confluence/spaces/NIFI/pages/318606579/NiFi+Improvement+Proposal+Process



Reply via email to