Return-Path: X-Original-To: apmail-logging-commits-archive@minotaur.apache.org Delivered-To: apmail-logging-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 878AC9EAD for ; Wed, 29 May 2013 05:56:28 +0000 (UTC) Received: (qmail 83834 invoked by uid 500); 29 May 2013 05:56:28 -0000 Delivered-To: apmail-logging-commits-archive@logging.apache.org Received: (qmail 83653 invoked by uid 500); 29 May 2013 05:56:24 -0000 Mailing-List: contact commits-help@logging.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@logging.apache.org Delivered-To: mailing list commits@logging.apache.org Received: (qmail 83638 invoked by uid 99); 29 May 2013 05:56:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 May 2013 05:56:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 May 2013 05:56:16 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 89FA323888E7; Wed, 29 May 2013 05:55:55 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1487289 - in /logging/log4j/log4j2/trunk: core/src/main/java/org/apache/logging/log4j/core/appender/ core/src/main/java/org/apache/logging/log4j/core/net/ core/src/test/java/org/apache/logging/log4j/core/net/ src/changes/ Date: Wed, 29 May 2013 05:55:55 -0000 To: commits@logging.apache.org From: rgoers@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130529055555.89FA323888E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rgoers Date: Wed May 29 05:55:54 2013 New Revision: 1487289 URL: http://svn.apache.org/r1487289 Log: LOG4J2-228 & LOG4J2-246 - UDP now sends 1 event per packet. The data buffer is reset in a finally clause Added: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/UDPSocketServer.java (contents, props changed) - copied, changed from r1485781, logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServer.java Removed: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServer.java Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramOutputStream.java logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/AbstractSocketServerTest.java logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/TCPSocketServerTest.java logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServerTest.java logging/log4j/log4j2/trunk/src/changes/changes.xml Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java (original) +++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java Wed May 29 05:55:54 2013 @@ -69,7 +69,7 @@ public class DefaultErrorHandler impleme LOGGER.error(msg, t); } lastException = current; - if (!appender.isExceptionSuppressed() && t != null) { + if (!appender.isExceptionSuppressed() && t != null && !(t instanceof AppenderRuntimeException)) { throw new AppenderRuntimeException(msg, t); } } @@ -87,7 +87,7 @@ public class DefaultErrorHandler impleme LOGGER.error(msg, t); } lastException = current; - if (!appender.isExceptionSuppressed() && t != null) { + if (!appender.isExceptionSuppressed() && t != null && !(t instanceof AppenderRuntimeException)) { throw new AppenderRuntimeException(msg, t); } } Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java (original) +++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java Wed May 29 05:55:54 2013 @@ -98,7 +98,7 @@ public class SocketAppender handlers = new ConcurrentHashMap(); - // max size so we only have to deal with one packet - private int maxBufferSize = 1024 * 65; + private int maxBufferSize = 1024 * 65 + 1024; /** * Constructor. - * + * * @param port * to listen on. * @throws IOException @@ -80,7 +78,7 @@ public class UDPSocketServer extends Abs /** * Main startup for the server. - * + * * @param args * The command line arguments. * @throws Exception @@ -138,63 +136,19 @@ public class UDPSocketServer extends Abs byte[] buf = new byte[maxBufferSize]; DatagramPacket packet = new DatagramPacket(buf, buf.length); server.receive(packet); - final DatagramPacketHandler handler = new DatagramPacketHandler(packet); - handlers.put(handler.getId(), handler); - handler.start(); - } catch (final IOException ioe) { - System.out.println("Exception encountered on accept. Ignoring. Stack Trace :"); - ioe.printStackTrace(); - } - } - for (final Map.Entry entry : handlers.entrySet()) { - final DatagramPacketHandler handler = entry.getValue(); - handler.shutdown(); - try { - handler.join(); - } catch (final InterruptedException ie) { - // Ignore the exception - } - } - } - - /** - * Thread that processes the events. - */ - private class DatagramPacketHandler extends Thread { - private final ObjectInputStream ois; - private boolean shutdown = false; - - public DatagramPacketHandler(final DatagramPacket packet) throws IOException { - this.ois = new ObjectInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength())); - } - - public void shutdown() { - this.shutdown = true; - interrupt(); - } - - @Override - public void run() { - boolean closed = false; - try { - try { - while (!shutdown) { - final LogEvent event = (LogEvent) ois.readObject(); - if (event != null) { - log(event); - } - } - } catch (final EOFException eof) { - closed = true; - } catch (final OptionalDataException opt) { - logger.error("OptionalDataException eof=" + opt.eof + " length=" + opt.length, opt); - } catch (final ClassNotFoundException cnfe) { - logger.error("Unable to locate LogEvent class", cnfe); - } catch (final IOException ioe) { - logger.error("IOException encountered while reading from socket", ioe); + ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength())); + final LogEvent event = (LogEvent) ois.readObject(); + if (event != null) { + log(event); } - } finally { - handlers.remove(getId()); + } catch (final OptionalDataException opt) { + logger.error("OptionalDataException eof=" + opt.eof + " length=" + opt.length, opt); + } catch (final ClassNotFoundException cnfe) { + logger.error("Unable to locate LogEvent class", cnfe); + } catch (final EOFException eofe) { + logger.info("EOF encountered"); + } catch (final IOException ioe) { + logger.error("Exception encountered on accept. Ignoring. Stack Trace :", ioe); } } } Propchange: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/UDPSocketServer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/UDPSocketServer.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/AbstractSocketServerTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/AbstractSocketServerTest.java?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/AbstractSocketServerTest.java (original) +++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/AbstractSocketServerTest.java Wed May 29 05:55:54 2013 @@ -23,6 +23,7 @@ import org.apache.logging.log4j.core.Fil import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.AppenderRuntimeException; import org.apache.logging.log4j.core.appender.ConsoleAppender; import org.apache.logging.log4j.core.appender.SocketAppender; import org.apache.logging.log4j.core.filter.AbstractFilter; @@ -31,6 +32,7 @@ import org.apache.logging.log4j.test.app import org.junit.After; import org.junit.Test; +import java.io.IOException; import java.io.Serializable; import java.util.Arrays; import java.util.List; @@ -63,12 +65,14 @@ public abstract class AbstractSocketServ private final String port; private final String protocol; + private final boolean expectLengthException; private final Logger root = ctx.getLogger(AbstractSocketServerTest.class.getSimpleName()); - protected AbstractSocketServerTest(final String protocol, final String port) { + protected AbstractSocketServerTest(final String protocol, final String port, final boolean expectLengthException) { this.protocol = protocol; this.port = port; + this.expectLengthException = expectLengthException; } @After @@ -87,20 +91,30 @@ public abstract class AbstractSocketServ Arrays.fill(a64K, 'a'); final String m1 = new String(a64K); final String m2 = MESSAGE_2 + m1; - testServer(m1, m2); + if (expectLengthException) { + try { + testServer(m1, m2); + + } catch (AppenderRuntimeException are) { + assertTrue("", are.getCause() != null && are.getCause() instanceof IOException); + // Failure expected. + } + } else { + testServer(m1, m2); + } } protected void testServer(final String message1, final String message2) throws Exception { final Filter socketFilter = new ThreadFilter(Filter.Result.NEUTRAL, Filter.Result.DENY); final Filter serverFilter = new ThreadFilter(Filter.Result.DENY, Filter.Result.NEUTRAL); final SocketAppender appender = SocketAppender.createAppender("localhost", this.port, this.protocol, "-1", null, "Test", null, - null, null, socketFilter, null, null); + "false", null, socketFilter, null, null); appender.start(); final ListAppender listApp = new ListAppender("Events", serverFilter, null, false, false); listApp.start(); final PatternLayout layout = PatternLayout.createLayout("%m %ex%n", null, null, null, null); final ConsoleAppender console = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true"); - final Logger serverLogger = ctx.getLogger(SocketServer.class.getName()); + final Logger serverLogger = ctx.getLogger(this.getClass().getName()); serverLogger.addAppender(console); serverLogger.setAdditive(false); Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/TCPSocketServerTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/TCPSocketServerTest.java?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/TCPSocketServerTest.java (original) +++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/TCPSocketServerTest.java Wed May 29 05:55:54 2013 @@ -47,7 +47,7 @@ public class TCPSocketServerTest extends } public TCPSocketServerTest() { - super("tcp", PORT); + super("tcp", PORT, false); } } Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServerTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServerTest.java?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServerTest.java (original) +++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/UDPSocketServerTest.java Wed May 29 05:55:54 2013 @@ -22,7 +22,6 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; -@Ignore public class UDPSocketServerTest extends AbstractSocketServerTest { private static final String PORT = "8199"; private static final int PORT_NUM = Integer.parseInt(PORT); @@ -49,7 +48,7 @@ public class UDPSocketServerTest extends } public UDPSocketServerTest() { - super("udp", PORT); + super("udp", PORT, true); } } Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1487289&r1=1487288&r2=1487289&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original) +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed May 29 05:55:54 2013 @@ -22,6 +22,12 @@ + + Data buffer is reset in finally clause. + + + UDP now sends one event per packet. + Method name changes in interface org.apache.logging.log4j.spi.ThreadContextMap: getContext() to getCopy(), get() to getImmutableMapOrNull().