You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/04/12 17:00:20 UTC
[1/6] logging-log4j2 git commit: LOG4J2-1343 performance
optimization: if immediateFlush and buffer is empty then write straight to
the file without copying into the buffer
Repository: logging-log4j2
Updated Branches:
refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered 141bdd2ab -> 8547f5383
LOG4J2-1343 performance optimization: if immediateFlush and buffer is empty then write straight to the file without copying into the buffer
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3c6584e4
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3c6584e4
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3c6584e4
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: 3c6584e47ec0df29586bd577ba3368592159a240
Parents: 141bdd2
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 20:17:38 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 20:17:38 2016 +0900
----------------------------------------------------------------------
.../apache/logging/log4j/core/appender/OutputStreamManager.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3c6584e4/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
index 7379804..c1b4934 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
@@ -170,7 +170,10 @@ public class OutputStreamManager extends AbstractManager implements ByteBufferDe
* @throws AppenderLoggingException if an error occurs.
*/
protected synchronized void write(final byte[] bytes, final int offset, final int length, boolean immediateFlush) {
- // System.out.println("write " + count);
+ if (immediateFlush && byteBuffer.position() == 0) {
+ writeToDestination(bytes, offset, length);
+ return;
+ }
if (length >= byteBuffer.capacity()) {
// if request length exceeds buffer capacity, flush the buffer and write the data directly
flush();
[3/6] logging-log4j2 git commit: LOG4J2-1343 removed outdated
comment: the new implementation does not have this problem (still not
enabling gc-free sockets for now...)
Posted by rp...@apache.org.
LOG4J2-1343 removed outdated comment: the new implementation does not have this problem (still not enabling gc-free sockets for now...)
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8d7bf48d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8d7bf48d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8d7bf48d
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: 8d7bf48d251c18d42285ec85ebecdf77a152f06a
Parents: c99f4aa
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 22:22:09 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 22:22:09 2016 +0900
----------------------------------------------------------------------
.../java/org/apache/logging/log4j/core/appender/SocketAppender.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8d7bf48d/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
index 6d0221e..1a542db 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
@@ -248,7 +248,6 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
@Override
protected void directEncodeEvent(final LogEvent event) {
// Disable garbage-free logging for now:
- // problem with TCP: synchronization on manager in Reconnector thread would give deadlock.
// problem with UDP: 8K buffer size means that largish messages get broken up into chunks
writeByteArrayToManager(event); // revert to classic (non-garbage free) logging
}
[5/6] logging-log4j2 git commit: LOG4J2-1343 increase iterations to
increase probability of finding occasional problems;
make errors in background thread (if any) accessible to test runner thread
Posted by rp...@apache.org.
LOG4J2-1343 increase iterations to increase probability of finding occasional problems; make errors in background thread (if any) accessible to test runner thread
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/9974a1f5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/9974a1f5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/9974a1f5
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: 9974a1f51e4d37b4080ccef3e6cf3e42d9c232cf
Parents: c70775c
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 22:26:26 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 22:26:26 2016 +0900
----------------------------------------------------------------------
.../log4j/core/appender/FileAppenderTest.java | 21 +++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9974a1f5/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
index df0b2b2..eea70ff 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
@@ -105,26 +105,34 @@ public class FileAppenderTest {
@Test
public void testMultipleAppenders() throws Exception {
final ExecutorService pool = Executors.newFixedThreadPool(THREADS);
- final int count = 10;
- final Runnable runnable = new FileWriterRunnable(false, count);
+ final Exception[] error = new Exception[1];
+ final int count = 100;
+ final Runnable runnable = new FileWriterRunnable(false, count, error);
for (int i = 0; i < THREADS; ++i) {
pool.execute(runnable);
}
pool.shutdown();
pool.awaitTermination(10, TimeUnit.SECONDS);
+ if (error[0] != null) {
+ throw error[0];
+ }
verifyFile(THREADS * count);
}
@Test
public void testMultipleLockedAppenders() throws Exception {
final ExecutorService pool = Executors.newFixedThreadPool(THREADS);
- final int count = 10;
- final Runnable runnable = new FileWriterRunnable(true, count);
+ final Exception[] error = new Exception[1];
+ final int count = 100;
+ final Runnable runnable = new FileWriterRunnable(true, count, error);
for (int i = 0; i < THREADS; ++i) {
pool.execute(runnable);
}
pool.shutdown();
pool.awaitTermination(10, TimeUnit.SECONDS);
+ if (error[0] != null) {
+ throw error[0];
+ }
verifyFile(THREADS * count);
}
@@ -207,10 +215,12 @@ public class FileAppenderTest {
public class FileWriterRunnable implements Runnable {
private final boolean lock;
private final int count;
+ private final Exception[] error;
- public FileWriterRunnable(final boolean lock, final int count) {
+ public FileWriterRunnable(final boolean lock, final int count, final Exception[] error) {
this.lock = lock;
this.count = count;
+ this.error = error;
}
@Override
@@ -221,6 +231,7 @@ public class FileAppenderTest {
writer(lock, count, thread.getName());
} catch (final Exception ex) {
+ error[0] = ex;
throw new RuntimeException(ex);
}
}
[2/6] logging-log4j2 git commit: LOG4J2-1343 bugfix in performance
optimization: must flush destination when done
Posted by rp...@apache.org.
LOG4J2-1343 bugfix in performance optimization: must flush destination when done
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c99f4aad
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c99f4aad
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c99f4aad
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: c99f4aade2725937a64d959c6df01f0ecd8e4e7b
Parents: 3c6584e
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 22:14:01 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 22:14:01 2016 +0900
----------------------------------------------------------------------
.../org/apache/logging/log4j/core/appender/OutputStreamManager.java | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c99f4aad/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
index c1b4934..b22f083 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
@@ -172,6 +172,7 @@ public class OutputStreamManager extends AbstractManager implements ByteBufferDe
protected synchronized void write(final byte[] bytes, final int offset, final int length, boolean immediateFlush) {
if (immediateFlush && byteBuffer.position() == 0) {
writeToDestination(bytes, offset, length);
+ flushDestination();
return;
}
if (length >= byteBuffer.capacity()) {
[4/6] logging-log4j2 git commit: LOG4J2-1343 added countdown latch to
ensure the UDP server is listening before logging the event;
split up lines for easier debugging
Posted by rp...@apache.org.
LOG4J2-1343 added countdown latch to ensure the UDP server is listening before logging the event; split up lines for easier debugging
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c70775c9
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c70775c9
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c70775c9
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: c70775c94d90eeb6ff96e25fe516c783a45504ac
Parents: 8d7bf48
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 22:24:31 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 22:24:31 2016 +0900
----------------------------------------------------------------------
.../log4j/core/appender/SocketAppenderTest.java | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c70775c9/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
index 5e4a556..50586f7 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
@@ -33,6 +33,7 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.Level;
@@ -148,6 +149,11 @@ public class SocketAppenderTest {
@Test
public void testUdpAppender() throws Exception {
+ try {
+ udpServer.latch.await();
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, Protocol.UDP, null, 0, -1,
false, "Test", true, true, null, null, false, null);
@@ -207,6 +213,7 @@ public class SocketAppenderTest {
private final DatagramSocket sock;
private boolean shutdown = false;
private Thread thread;
+ private CountDownLatch latch = new CountDownLatch(1);
public UDPSocketServer() throws IOException {
this.sock = new DatagramSocket(PORT);
@@ -224,12 +231,16 @@ public class SocketAppenderTest {
final DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
try {
while (!shutdown) {
+ latch.countDown();
sock.receive(packet);
final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(packet.getData()));
++udpCount;
- list.add((LogEvent) ois.readObject());
+ final Object received = ois.readObject(); // separate lines for debugging
+ final LogEvent event = (LogEvent) received;
+ list.add(event);
}
- } catch (final Exception ex) {
+ } catch (final Throwable ex) {
+ ex.printStackTrace();
if (!shutdown) {
throw new RuntimeException(ex);
}
[6/6] logging-log4j2 git commit: LOG4J2-1274 enable garbage-free text
encoding to bytes by default
Posted by rp...@apache.org.
LOG4J2-1274 enable garbage-free text encoding to bytes by default
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8547f538
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8547f538
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8547f538
Branch: refs/heads/LOG4J2-1343-no-gc-os-appenders-bytebuffered
Commit: 8547f5383374738e202a8cee6456b8bb59cf2386
Parents: 9974a1f
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 12 22:28:41 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 12 22:28:41 2016 +0900
----------------------------------------------------------------------
.../main/java/org/apache/logging/log4j/core/util/Constants.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8547f538/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java
index eedcf71..54e0a86 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java
@@ -103,8 +103,9 @@ public final class Constants {
* @since 2.6
*/
public static final boolean ENABLE_DIRECT_ENCODERS = PropertiesUtil.getProperties().getBooleanProperty(
- "log4j2.enable.direct.encoders",
- AsyncLoggerContextSelector.class.getName().equals(PropertiesUtil.getProperties().getStringProperty(LOG4J_CONTEXT_SELECTOR)));
+ "log4j2.enable.direct.encoders", true); // enable GC-free text encoding by default
+ // the alternative is to enable GC-free encoding only by default only when using all-async loggers:
+ //AsyncLoggerContextSelector.class.getName().equals(PropertiesUtil.getProperties().getStringProperty(LOG4J_CONTEXT_SELECTOR)));
/**
* Prevent class instantiation.