]
Bela Ban updated JGRP-2406:
---------------------------
Fix Version/s: 4.2.0
(was: 4.1.9)
MERGE3 not working with TCP using ForkJoinPool
----------------------------------------------
Key: JGRP-2406
URL:
https://issues.redhat.com/browse/JGRP-2406
Project: JGroups
Issue Type: Bug
Affects Versions: 4.1.8
Reporter: Olivier Peyrusse
Assignee: Bela Ban
Priority: Minor
Fix For: 4.2.0
Attachments: logs.tgz, project.zip, timeline.txt
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.
{code:xml}
<TCP
...
thread_pool.use_fork_join_pool="true" />
{code}
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.