[
https://issues.apache.org/jira/browse/DIRMINA-1057?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16195839#comment-16195839
]
Jonathan Valliere commented on DIRMINA-1057:
--------------------------------------------
Okay, looks like I found a condition where fireMessageSent can occur more than
once per WriteRequest causing the counter to go negative.
{code:java}
int localWrittenBytes = send(session, buf, destination);
if ((localWrittenBytes == 0) || (writtenBytes >=
maxWrittenBytes)) {
// Kernel buffer is full or wrote too much
setInterestedInWrite(session, true);
session.getWriteRequestQueue().offer(session, writeRequest);
scheduleFlush(session);
} else {
setInterestedInWrite(session, false);
// Clear and fire event
session.setCurrentWriteRequest(null);
writtenBytes += localWrittenBytes;
buf.reset();
session.getFilterChain().fireMessageSent(writeRequest);
break;
}
{code}
It checks the condition {{((localWrittenBytes == 0) || (writtenBytes >=
maxWrittenBytes))}} which is incorrect. It should be {{((localWrittenBytes ==
0) || buf.hasRemaining() || (writtenBytes >= maxWrittenBytes))}}
> AbstractIoSession getScheduledWriteMessages always -negative?
> -------------------------------------------------------------
>
> Key: DIRMINA-1057
> URL: https://issues.apache.org/jira/browse/DIRMINA-1057
> Project: MINA
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.16
> Environment: I'm testing slow consumer backlog detection and while
> getScheduledWriteBytes() correctly grows, getScheduledWriteMessages is always
> negative and does not increase. looking into code to see why but putting bug
> report here as well for tracking
> Reporter: Andre Mermegas
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)