[
https://jira.jboss.org/jira/browse/JGRP-1014?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1014:
--------------------------------
STATE_TRANSFER and STREAMING_STATE_TRANSFER now use OVERWRITE_DIGEST instead of
SET_DIGEST. So setting the digest to B:10 after the message B:11 set it to B:11 will reset
the digest to B:10, therefore the B:11 message (whose state change was overwritten) will
get retransmitted.
NAKACK: SET_DIGEST does not overwrite the digest
------------------------------------------------
Key: JGRP-1014
URL:
https://jira.jboss.org/jira/browse/JGRP-1014
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.8
When we set a digest in NAKACK, we do not overwrite an element for a member if it already
exists. With state transfer, the following issue can occur (see [1]):
Scenario #2:
- [NAKACK] D receives B:11 (digest is 11 now for B)
- [NAKACK] D applies the digest: this does NOT reset the digest for B to #10, but it
remains #11 !!
- D delivers B:11 to the app, changes state
- D sets state, overwriting the change from B:11
--> B:11 will NOT get retransmitted as the digest in NAKACK contains it !
--> B:11 is lost
SOLUTION: maybe add a 'state' boolean to the setDigest() method and overwrite if
true
This is a regression in 2.8 only; 2.6.x and 2.4.x handle SET_DIGEST correctly and do
overwrite the digest.
[1]
https://jira.jboss.org/jira/browse/JGRP-1013
--
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