[jboss-jira] [JBoss JIRA] (JGRP-2406) MERGE3 not working with TCP using ForkJoinPool
Olivier Peyrusse (Jira)
issues at jboss.org
Mon Mar 16 04:09:03 EDT 2020
[ https://issues.redhat.com/browse/JGRP-2406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13999156#comment-13999156 ]
Olivier Peyrusse commented on JGRP-2406:
----------------------------------------
Hello Bela Ban,
although I am not familiar yet with the internal machinery of JGroups, that was also my interpretation of the problem. I saw that your tasks were blocked on a Conditional, which is not supported by the FJP. You could always detect the use of a FJP, try using {{ManagedBlocker}}, etc, but it is cumbersome.
I agree with your opinion that a FJP may not be useful to JGroups, at least for this part. In the project I submitted, it was enabled by one of my colleagues and I think the reason for this choice is that our own product heavily relies on FJPs. So seeing the option must have triggered an habit and then it was enabled.
As I said, I reverted that change and the application was working like a charm.
Thanks for the investigation.
> 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.1
>
> 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.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list