[
https://issues.jboss.org/browse/JGRP-1331?page=com.atlassian.jira.plugin....
]
Bela Ban commented on JGRP-1331:
--------------------------------
Instead of the class Digest.Entry, we could have a byte[] array and methods which access
it through Digest. (This would all be hidden by Digest).
The byte[] buffer could consist of
- flag byte (first byte):
- the first 4 bits define how many bytes we use for the highest_delivered
- the last 4 bits define how many bytes we use for highest_received
- highest_delivered (1 - 8 bytes)
- highest_received (1 - 8 bytes). This is expressed as a (positive) delta to
highest_delivered
To encode a short we only need 2 bytes. For numbers up to 2^24, we only need 3 bytes and
so on.
Example: to encode highest_deliverd=25000, highest_received=25010, we'd use
| 0100 - 1000 | 25000 | 10 |
- The first 2 bits are 2 = 2 bytes (a short) to represent 25'000
- The second half is 1, which means the second number needs only 1 byte (10), and
that's the offset to 25000
- So to represent 25000{25010}, we need 4 bytes !
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.0
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