[ 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to