NAKACK: don't wrap retransmitted messages
-----------------------------------------
Key: JGRP-1266
URL:
https://issues.jboss.org/browse/JGRP-1266
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.12
In NAKACK.handleXmitReq(), we wrap messages that are retransmitted. Every xmitted message
gets serialized into a byte buffer, and is added as the payload of another message. When
received, NAKACK.handleXmitRsp() de-serializes the message and passes it up.
We can get rid of this unneeded serialization/de-serialization:
- When a message is to be retransmitted with dest=null (use_mcast_xmit), we simply resend
the message: the rceeiver will receive the message as if it was a regular message, and not
an xmit. NAKACK.handleMessage() will be invoked.
- When dest != null, we make a copy of the message and replace the NakAckHeader.MSG with
XMIT_RSP (plus seqno). When the message is received (handledd by NAKACK.handleXmitRsp()
this time), we simply replace the XMIT_RSP with a MSG again, and pass the message up
When we have a lot of retransmissions, this will save 1 serialization when handling the
xmit request, and 1 de-serialization when handling the xmit response. Even better when
use_mcast_xmit=true: here, everybody has to de-serialize the xmitted message. With the
proposed solution, this cost is gone
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira