Some versions earlier (at the time the first race-condition fix was commited) it was thread safe because of invocation ordering.
Context
I noticed that the NodeListener from HAManager somethimes does not get invoked and i think its a race between HAManager#init and IgniteClusterManager#join / #leave.
IgniteClusterManager sets a listener in Ignite which is executed on a Ignite-Thread that then schedules back to vertx.executeBlocking.
Now when this Listener triggers and then the worker thread executes this block the NodeListener may not be visible.
Version
4.1.1
Some versions earlier (at the time the first race-condition fix was commited) it was thread safe because of invocation ordering.
Context
I noticed that the NodeListener from HAManager somethimes does not get invoked and i think its a race between HAManager#init and IgniteClusterManager#join / #leave.
IgniteClusterManager sets a listener in Ignite which is executed on a Ignite-Thread that then schedules back to
vertx.executeBlocking
.Now when this Listener triggers and then the worker thread executes this block the NodeListener may not be visible.
Vertx initialization clustered: VertxImpl # clusterManager.join() IgniteClusterManager # join()
VertxImpl # initializeHaManager HAManager # init() IgniteClusterManager # nodeListener()
Do you have a reproducer?
no - i think its pretty obvious.
Steps to reproduce
Extra
OpenJDK 16