-
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.