You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Benoit Tellier (Jira)" <se...@james.apache.org> on 2021/07/28 03:46:00 UTC
[jira] [Commented] (JAMES-3620) Memory leak at
org.apache.james.protocols.smtp.core.AbstractHookableCmdHandler
[ https://issues.apache.org/jira/browse/JAMES-3620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17388426#comment-17388426 ]
Benoit Tellier commented on JAMES-3620:
---------------------------------------
Associated code:
{code:java}
@Override
public Response onCommand(SMTPSession session, Request request) {
TimeMetric timeMetric = metricFactory.timer("SMTP-" + request.getCommand().toLowerCase(Locale.US));
String command = request.getCommand();
String parameters = request.getArgument();
try (Closeable closeable =
MDCBuilder.create()
.addToContext(MDCBuilder.ACTION, command)
.build()) {
Response response = doFilterChecks(session, command, parameters);
if (response == null) {
response = processHooks(session, command, parameters);
if (response == null) {
return doCoreCmd(session, command, parameters);
} else {
return response;
}
} else {
return response;
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
timeMetric.stopAndPublish();
}
}
{code}
We can see that the timeMetric is well stopped and published even when faced with error.
Do you get proofs of such a memory leak, from a runtime experiment?
Cheers,
Benoit
> Memory leak at org.apache.james.protocols.smtp.core.AbstractHookableCmdHandler
> ------------------------------------------------------------------------------
>
> Key: JAMES-3620
> URL: https://issues.apache.org/jira/browse/JAMES-3620
> Project: James Server
> Issue Type: Improvement
> Components: protocols, SMTPServer
> Reporter: tuister
> Priority: Blocker
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> For each command, the command handler will use a timer record the rt. So, if someone input error commands, the command handler will create a new timer to record, this will cause memory leak.
> {code:java}
> //AbstractHookableCmdHandler#onCommand
> //see also org.apache.james.protocols.smtp.core.UnknownCmdHandler
> TimeMetric timeMetric = metricFactory.timer("SMTP-" + request.getCommand().toLowerCase(Locale.US));{code}
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org