[ https://issues.apache.org/jira/browse/LOG4J2-1922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16028747#comment-16028747 ]
Kohei Tamura commented on LOG4J2-1922: -------------------------------------- Steps to reproduce: (1) Create a client: {code:java} import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class TcpSocketClient { public static void main(String[] args) { Logger logger = LogManager.getLogger("test.logger"); logger.info("InfoMessage"); } } {code} (2) Create log4j2.xml for the client: {code:xml} <Configuration status="info" name="example" packages=""> <Appenders> <Socket name="socket" host="localhost" port="1111"> <SerializedLayout /> </Socket> </Appenders> <Loggers> <Root level="INFO"> </Root> <Logger name="test.logger" level="info"> <AppenderRef ref="socket"/> </Logger> </Loggers> </Configuration> {code} (3) Create log4j2.xml for TcpSocketServer: {code:xml} <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info" additivity="false"> <AppenderRef ref="console"/> </Root> </Loggers> </Configuration> {code} (4) Run TcpSocketServer {noformat} java -cp "log4j-core-2.3.jar;log4j-api-2.3.jar" org.apache.logging.log4j.core.net.server.TcpSocketServer 1111 log4j2.xml {noformat} (5) Run the client again and again: {noformat} java TcpSocketClient {noformat} (6) Run netstat command {noformat} netstat -aon | find "1111" TCP 0.0.0.0:1111 0.0.0.0:0 LISTENING 8748 TCP 127.0.0.1:1111 127.0.0.1:62928 CLOSE_WAIT 8748 TCP 127.0.0.1:1111 127.0.0.1:62929 CLOSE_WAIT 8748 TCP 127.0.0.1:1111 127.0.0.1:62931 CLOSE_WAIT 8748 TCP 127.0.0.1:1111 127.0.0.1:62932 CLOSE_WAIT 8748 TCP 127.0.0.1:62928 127.0.0.1:1111 FIN_WAIT_2 7572 TCP 127.0.0.1:62929 127.0.0.1:1111 FIN_WAIT_2 8652 TCP 127.0.0.1:62931 127.0.0.1:1111 FIN_WAIT_2 8320 TCP 127.0.0.1:62932 127.0.0.1:1111 FIN_WAIT_2 9136 TCP [::]:1111 [::]:0 LISTENING 8748 {noformat} > 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.3.15#6346)