-
Bug
-
Resolution: Done
-
Minor
-
4.1.8
-
None
With JDK11, using the TCP protocol with the ForkJoinPool is causing constant failures of MERGE3.
I consistently observed the following, from the point of view of a member M
- M asks for other coordinator views. It contacts A and B
- A and B send their views
- M waits and timeouts for receiving views and abort the merge
- immediately after aborting the merge, M process messages containing the views of A and B.
In timeline.txt, you will see the extracts for logs from the various members at play.
After many experiments, the one parameter causing this issue is in the TCP protocol.
<TCP
...
thread_pool.use_fork_join_pool="true" />
Setting thread_pool.use_fork_join_pool to true repeatedly produces the problem, while using thread_pool.use_fork_join_pool with false works fine.
Project details:
- as tested within Kubernetes, this project uses KUBE_PING as its discovery protocol
- to understand the reason for the failed merges, I created the protocol MERGE4, that is MERGE3 with additional logs.
- logs.tgz contains all logs from the various members involved in the test.