[
https://issues.apache.org/jira/browse/DIRMINA-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17790963#comment-17790963
]
Emmanuel Lécharny commented on DIRMINA-1146:
--------------------------------------------
Hi [~eissam_yassin], if the *maxscheduledwriterequests* keep increasing, it's
because messages never get written to the remote peer.
There are two places this counter get decremented:
1) When the message get actually written (at the very end, we decrement the
scheduled messages counter)
{code:java}
/**
* Increase the number of written messages
*
* @param request The written message
* @param currentTime The current tile
*/
public final void increaseWrittenMessages(WriteRequest request, long
currentTime) {
Object message = request.getMessage();
if (message instanceof IoBuffer) {
IoBuffer b = (IoBuffer) message;
if (b.hasRemaining()) {
return;
}
}
writtenMessages++;
lastWriteTime = currentTime;
if (getService() instanceof AbstractIoService) {
((AbstractIoService)
getService()).getStatistics().increaseWrittenMessages(currentTime);
}
decreaseScheduledWriteMessages();
}
{code}
This method is called when the {{messageSent}} event is received:
{code:java}
@Override
public void messageSent(NextFilter nextFilter, IoSession session,
WriteRequest writeRequest) throws Exception {
long now = System.currentTimeMillis();
((AbstractIoSession) session).increaseWrittenMessages(writeRequest,
now);
{code}
2) When we get an error:
{code:java}
private void clearWriteRequestQueue(S session) {
...
// Create an exception and notify.
if (!failedRequests.isEmpty()) {
WriteToClosedSessionException cause = new
WriteToClosedSessionException(failedRequests);
for (WriteRequest r : failedRequests) {
session.decreaseScheduledBytesAndMessages(r);
r.getFuture().setException(cause);
}
IoFilterChain filterChain = session.getFilterChain();
filterChain.fireExceptionCaught(cause);
}
}
{code}
called by:
{code:java}
private boolean removeNow(S session) {
clearWriteRequestQueue(session);
{code}
which is part of the session cleanup.
> TLS enabled session got disconnected when outbound messages add up to the
> value of maxscheduledwriterequests
> ------------------------------------------------------------------------------------------------------------
>
> Key: DIRMINA-1146
> URL: https://issues.apache.org/jira/browse/DIRMINA-1146
> Project: MINA
> Issue Type: Bug
> Reporter: Chily
> Assignee: Jonathan Valliere
> Priority: Blocker
> Fix For: 2.2.2
>
>
> Slow Consumer Protection Feature does not work on TLS enabled session
> -> ioSession.getScheduledWriteMessages() never decreases in
> IoSessionResponder#send method
> internal.engine.session.maxscheduledwriterequests=10000
> Our TLS enabled session got disconneced when the outbound messages added up
> to 10000.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]