You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@logging.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2017/07/28 23:17:01 UTC

[jira] [Commented] (LOG4J2-1922) SocketHandler leaks connection if EOFException is thrown

    [ https://issues.apache.org/jira/browse/LOG4J2-1922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16105847#comment-16105847 ] 

Gary Gregory commented on LOG4J2-1922:
--------------------------------------

Hi,

Can you see if [LOG4J-1994|https://issues.apache.org/jira/browse/LOG4J2-1994] fixes this issue for you? 

The class is packaged in a different jar in 2.9-SNAPSHOT: https://repository.apache.org/content/repositories/snapshots/org/apache/logging/log4j/log4j-server/2.9-SNAPSHOT/

Thank you,
Gary

> SocketHandler leaks connection if EOFException is thrown
> --------------------------------------------------------
>
>                 Key: LOG4J2-1922
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1922
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.7
>            Reporter: Kohei Tamura
>
> SocketHandler should close the input stream in the finally block.
> {code:title=TcpSocketServer.java|borderStyle=solid}
>     /**
>      * Thread that processes the events.
>      */
>     private class SocketHandler extends Thread {
>         private final T inputStream;
>         private volatile boolean shutdown = false;
>         public SocketHandler(final Socket socket) throws IOException {
>             this.inputStream = logEventInput.wrapStream(socket.getInputStream());
>         }
>         @Override
>         public void run() {
>             boolean closed = false;
>             try {
>                 try {
>                     while (!shutdown) {
>                         logEventInput.logEvents(inputStream, TcpSocketServer.this);
>                     }
>                 } catch (final EOFException e) {
>                     closed = true;
>                 } catch (final OptionalDataException e) {
>                     logger.error("OptionalDataException eof=" + e.eof + " length=" + e.length, e);
>                 } catch (final IOException e) {
>                     logger.error("IOException encountered while reading from socket", e);
>                 }
>                 if (!closed) {
>                     try {
>                         inputStream.close();
>                     } catch (final Exception ex) {
>                         // Ignore the exception;
>                     }
>                 }
>             } finally {
>                 handlers.remove(Long.valueOf(getId()));
>             }
>         }
>         public void shutdown() {
>             this.shutdown = true;
>             interrupt();
>         }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)