[
https://issues.jboss.org/browse/JGRP-1331?page=com.atlassian.jira.plugin....
]
Bela Ban commented on JGRP-1331:
--------------------------------
For marshalling purposes, we could add a flag 'options' to the serialized bytes
(Digest.writeTo(),readFrom()):
- NORMAL: 3 longs follow
- ZERO: nothing follows (all 3 longs are 0)
- COMPRESSED_SHORT_INT: 1 long, 1 short, 1 int. The first value is uncompressed, the
second is a short diff to the second, the 3rd is an int diff to the first.
- COMPRESSED_SHORT_SHORT: (similar to above)
- COMPRESSED_INT_SHORT:
- COMPRESSED_INT_INT:
If we have 100000 (low), 120000 (highest_delivered) and 125000 (highest_received),
we'd send the digest as:
| COMPRESSED_SHORT_SHORT | 100000 (long) | 20000 (short) | 5000 (short) |
As an additional optimization, we could use the special marker -1 to mean that the value
is the same as the previous value, e.g. for (100000,120000,120000): | 100000 | 20000
(short) | -1 (short) |
These optimizations are possible because we know that the highest_received and
highest_delivered seqnos are usually very close to each other (unless there are gaps and
retransmission). The low seqno is a bit further apart, depending on settings of STABLE.
If we can get rid of low, then we could even further optimize the serialization of
highest_received and highest_delivered seqnos !
Digest: remove low seqno
------------------------
Key: JGRP-1331
URL:
https://issues.jboss.org/browse/JGRP-1331
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Priority: Minor
Fix For: 3.1
We don't need Digest.Entry.low_seqno for NakReceiverWindow anymore. We only need it
for the Retransmitter implementations. If we can remove that last dependency, e.g. by
storing the last seqno removed from a retransmitter, we can remove low_seqno from a
digest. This is significant, for example if we have 100 nodes, a digest includes 300
longs:(low+highest_received+highest_delivered) * 100. If we remove low_seqno, we only have
200 longs. (These will still be further compressed in a different JIRA).
This is important for large clusters, to reduce the size of STABLE messages and views.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira