Additionally, moving the Queue control into the AbstractPollingIoProcessor and increasing backlog before adding to Queue and decreasing after removing will prevent the negative number race condition.
On Fri, Oct 6, 2017 at 2:08 PM, Jonathan Valliere <[email protected]> wrote: > I haven’t looked at the Mina code in a while. Looking at > DefaultIoFilterChain.java under HeadFilter#filterWrite > > WriteRequestQueue writeRequestQueue = s.getWriteRequestQueue(); > > if (!s.isWriteSuspended()) { > if (writeRequestQueue.isEmpty(session)) { > // We can write directly the message > s.getProcessor().write(s, writeRequest); > } else { > s.getWriteRequestQueue().offer(s, writeRequest); > s.getProcessor().flush(s); > } > } else { > s.getWriteRequestQueue().offer(s, writeRequest); > } > > Checking and working with the WriteRequestQueue is unnecessary because the > AbstractPollingIoProcessor adds all write requests to the Queue anyway. > > Similarly, it is confusing that the HeadFilter is controlling the > increaseScheduledWriteBytes. This should be controlled by the > AbstractPollingIoProcessor to ensure safety of the increase/decrease > operations. > > On Fri, Oct 6, 2017 at 12:05 PM, Emmanuel Lecharny (JIRA) <[email protected] > > wrote: > >> >> [ https://issues.apache.org/jira/browse/DIRMINA-1057?page=com. >> atlassian.jira.plugin.system.issuetabpanels:comment-tabpane >> l&focusedCommentId=16194776#comment-16194776 ] >> >> Emmanuel Lecharny commented on DIRMINA-1057: >> -------------------------------------------- >> >> There might be a race condition, where the {{scheduledWriteMessages}} is >> decremented before being incremented. >> >> Now this counter is not really interesting : it just count the number of >> messages waiting to be sent (or fully written) to the client. Ultimately, >> it should be 0 most of the time. >> >> > 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) >> > >
