[
https://jira.jboss.org/jira/browse/JGRP-844?page=com.atlassian.jira.plugi...
]
Bela Ban commented on JGRP-844:
-------------------------------
We cannot use cached results for a discovery initiated by MERGE2: if we have a partition
{A,B} and {C,D}, then MERGE2 on A and C would only get back {A,B} and A and {C,D} on C, so
they would never learn about each other.
Possible solution: use a time-aged cache which flushes the cache if elements are older
than N ms. Or pass an argument with the FIND_INITIAL_MBRS event down the stack which is a
boolean indicating whether to use cached results (for initial discovery) or not (for
MERGE2).
Discovery: make it a singleton with a shared transport
------------------------------------------------------
Key: JGRP-844
URL:
https://jira.jboss.org/jira/browse/JGRP-844
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.8
When we have a shared transport and 5 channels on top of it, then every channel will run
the discovery protocol. If it is the first node in a cluster, this will take <5 *
Discovery.timeout> ms.
Now, if the 5 channels didn't just share the transport, but also the discovery
protocol, then only the first channel to start would have to wait for Discovery.timeout
ms. It would then cache the results of that discovery and, when view changes are received,
replace the contents of the cache with view information.
The remaining 4 channels would then not even need to run the discovery phase, but the
discovery protocol would simply use the current view to return the coordinator. This means
that instead of 5 * timeout, we have 1 * timeout !
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira