Hi,

Thanks for reporting. Sounds you have enough supporting proof to create a JIRA 
(bug) issue, and we can continue discussion there.

Jan

> 22. aug. 2023 kl. 21:51 skrev Paul McArthur 
> <pmcarthur-apa...@proton.me.INVALID>:
> 
> Hi all,
> 
> I’m creating a cluster singleton plugin and have found an issue with the 
> lifecycle management of the singleton if the plugin is updated via the API.
> 
> When the /cluster/plugin api is called with an update payload, the 
> ClusterSingletons.modified method is called, which adds the new plugin to the 
> singletonMap (and starts it if applicable). Then it stops and removes the old 
> one. The order of these operations has a couple of side effects:
> 
> 1. For a very brief period, there are 2 instances of the plugin running. This 
> may not really be a problem, but does seem to violate the Singleton principle
> 
> 2. Given that the map is keyed on the plugin name, adding the replacement 
> first will overwrite the existing (old) entry in the map. Then when the old 
> one is removed, it actually removes the new one that was just added. This 
> leaves the singletonMap with no entry for the plugin. When the Overseer node 
> goes down, the stop method is not called for the plugin because it no longer 
> has an entry in the map.
> 
> I’ve reproduced the issue by modifying the TestContainerPlugin test, and I 
> can create a Jira issue, but I wonder if there is any reason that the added 
> and deleted methods are called in this order that I haven’t understood. It 
> seems to me that reversing the order in which they are called will solve the 
> issue.
> 
> Thanks,
> Paul


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to