You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Wei, Xinjing" <wx...@amazon.com.INVALID> on 2021/10/15 04:45:24 UTC

[AMQ-8306] Possible solutions to address a race condition in Active MQ

Hi all,

I'd like to start a conversation for AMQ-8306<https://issues.apache.org/jira/browse/AMQ-8306>.

I have talked to some of the community members and the suggestion was to use a thread safe list and synchronized keyword. It does resolve the issue we have but I hesitated on submitting the fix because this could be a change of behaviour on other customer managed plugins. The fix using synchronized keyword requires the plugins to always call “service.start()” in the plugin code and requires the implementation of the “start()” method to always be "multi-start()-safe".

Right now there's only one plugin in the Active MQ code base that may hit this race condition problem, but I don't know 1). if there will be more; 2). if any existing users have their own plugins that may have used the same pattern.
We are still discussing the potential solutions but we'd also like to have this conversation within the Apache Active MQ community for a greater audience on:

  1.  Whether there are users that implemented custom plugins with the same pattern as in MQTTPacketIdGenerator<https://github.com/apache/activemq/blob/activemq-5.15.15/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTPacketIdGenerator.java#L107>.
  2.  If there’s another solution to solve this issue with minimal behavioural impact

Thanks in advance.

Regards,
Xinjing Wei

Re: [AMQ-8306] Possible solutions to address a race condition in Active MQ

Posted by JB Onofré <jb...@nanthrax.net>.
Hi

I will take a deeper look. Let’s keep in touch. 

Regards
JB

> Le 15 oct. 2021 à 06:45, Wei, Xinjing <wx...@amazon.com.invalid> a écrit :
> 
> Hi all,
> 
> I'd like to start a conversation for AMQ-8306<https://issues.apache.org/jira/browse/AMQ-8306>.
> 
> I have talked to some of the community members and the suggestion was to use a thread safe list and synchronized keyword. It does resolve the issue we have but I hesitated on submitting the fix because this could be a change of behaviour on other customer managed plugins. The fix using synchronized keyword requires the plugins to always call “service.start()” in the plugin code and requires the implementation of the “start()” method to always be "multi-start()-safe".
> 
> Right now there's only one plugin in the Active MQ code base that may hit this race condition problem, but I don't know 1). if there will be more; 2). if any existing users have their own plugins that may have used the same pattern.
> We are still discussing the potential solutions but we'd also like to have this conversation within the Apache Active MQ community for a greater audience on:
> 
>  1.  Whether there are users that implemented custom plugins with the same pattern as in MQTTPacketIdGenerator<https://github.com/apache/activemq/blob/activemq-5.15.15/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTPacketIdGenerator.java#L107>.
>  2.  If there’s another solution to solve this issue with minimal behavioural impact
> 
> Thanks in advance.
> 
> Regards,
> Xinjing Wei