[
https://jira.jboss.org/jira/browse/JGRP-1122?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1122:
--------------------------------
The down code:
entry.lock(); // threads will only sync if they access the same entry
try {
seqno=entry.sent_msgs_seqno;
send_conn_id=entry.send_conn_id;
hdr=new UnicastHeader(UnicastHeader.DATA, seqno, send_conn_id, seqno
== DEFAULT_FIRST_SEQNO);
msg.putHeader(getName(), hdr);
// AckSenderWindow.add() is costly as it calls Retransmitter.add()
which calls TimeScheduler.schedule(),
// which adds the scheduled task to a DelayQueue, which does costly
tree rebalancing.
// In 2.9 (or 3.0), we'll replace use of
ScheduledThreadPoolExecutor in TimeScheduler with
// a ConcurrentSkipListMap, which is faster (log(n) access cost for
most ops). CSLM requires JDK 1.6
// Note that moving the next statement out of the lock scope made for
some really ugly code, that's
// why this was reverted !
entry.sent_msgs.add(seqno, msg); // add *including* UnicastHeader,
adds to retransmitter
entry.sent_msgs_seqno++;
}
finally {
entry.unlock();
}
could be changed to *not* acquire any lock at all (the lock showed up as a hotsport for
thread contention).
However this would mean that a seqno could be lost, for example if we have a temp OOME !
SOLUTION:
Keep track of 'lost' seqnos, e.g. +1 +2 -3 +4 +5, where 3 is lost. We cannot send
3 later because this would make it get delivered *before* messages which were sent after 3
!
Piggyback the NIL information for 3 in other UNICAST messages and skip 3 on the receiver.
Revisit critical path in UNICAST
--------------------------------
Key: JGRP-1122
URL:
https://jira.jboss.org/jira/browse/JGRP-1122
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.9
Same as
https://jira.jboss.org/jira/browse/JGRP-1104, but for UNICAST. Reduce contention
on the down and up directions
--
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