]
Bela Ban commented on JGRP-2327:
--------------------------------
Yes. This is not a showstopper, as retransmission for leave requests is unicast and
therefore ~500ms (default).
UNICAST3: create receiver table when non-first message is received
first
------------------------------------------------------------------------
Key: JGRP-2327
URL:
https://issues.jboss.org/browse/JGRP-2327
Project: JGroups
Issue Type: Enhancement
Reporter: Bela Ban
Assignee: Bela Ban
Priority: Major
Fix For: 4.0.17
* A and B
* B sends 2 messages to A: B1 and B2
* A receives B2 _before_ B1 (both B1 and B2 are OOB)
* The current code has A drop B2 and send a SEND_FIRST_SEQNO message to B
* B resends B1, but _not_ B2
* Retransmission needs to kick in before A receives B2. This might take up to
{{xmit_interval * 2}} ms before B2 is retransmitted and delivered
h4. Scenario (JGRP-2293):
* A installs a new view
* B sends a LEAVE-REQ to A (B is leaving, too) on the view installation and a VIEW-ACK
for the view. Both messages are unicasts to A and OOB
* The VIEW-ACK (B2) is received first and dropped, so it will have to be retransmitted
* This delays the view installation, as A waits for {{view_ack_collection_timeout}} ms
until it has received all VIEW-ACKs
h4. Workaround
* Set GMS.leave_timeout to a higher value (say 8000ms)
h4. Solution
* When B2 is received, and it is not the first message and we don't have a receiver
table for B yet, investigate whether we can create the receiver table anyway
* However, this requires the first seqno from B *to always be 0*
--> Investigate whether the first seqno in UNICAST3 is always 0, then this solution
will work