You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/11/02 18:55:03 UTC

[logging-log4j2] branch master updated (f275c48 -> 0d9e844)

This is an automated email from the ASF dual-hosted git repository.

vy pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.


    from f275c48  LOG4J2-3183 Avoid using MutableInstant of the event as a cache key in JsonTemplateLayout.
     new e2f6b96  Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.
     new 0d9e844  LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/net/SocketAppenderReconnectTest.java      | 32 +++++++++++++++++-----
 .../layout/template/json/JsonTemplateLayout.java   | 13 ++++++---
 2 files changed, 34 insertions(+), 11 deletions(-)

[logging-log4j2] 02/02: LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 0d9e844c77fc03f72fb1a2c96499b06640434c06
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Tue Nov 2 13:37:31 2021 +0100

    LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.
---
 .../core/net/SocketAppenderReconnectTest.java      | 32 +++++++++++++++++-----
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
index e007822..827ab06 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFact
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 import org.apache.logging.log4j.core.net.TcpSocketManager.HostResolver;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
@@ -188,13 +189,7 @@ class SocketAppenderReconnectTest {
             final String message = expectedMessages.get(messageIndex);
             // Due to socket initialization, the first write() might need some extra effort.
             if (messageIndex == 0) {
-                await()
-                        .pollInterval(100, TimeUnit.MILLISECONDS)
-                        .atMost(2, TimeUnit.SECONDS)
-                        .until(() -> {
-                            logger.info(message);
-                            return true;
-                        });
+                awaitUntilSucceeds(() -> logger.info(message));
             } else {
                 logger.info(message);
             }
@@ -204,6 +199,29 @@ class SocketAppenderReconnectTest {
         assertEquals(expectedMessages, actualMessages);
     }
 
+    private static void awaitUntilSucceeds(final Runnable runnable) {
+        final long pollIntervalMillis;
+        final long timeoutSeconds;
+        final boolean osWindows = PropertiesUtil.getProperties().isOsWindows();
+        if (osWindows) {
+            // Windows-specific non-sense values.
+            // These figures are collected by trial-and-error on a friend's laptop which has Windows installed.
+            pollIntervalMillis = 1_000L;
+            timeoutSeconds = 15;
+        } else {
+            // Universally sensible values.
+            pollIntervalMillis = 100;
+            timeoutSeconds = 3;
+        }
+        await()
+                .pollInterval(pollIntervalMillis, TimeUnit.MILLISECONDS)
+                .atMost(timeoutSeconds, TimeUnit.SECONDS)
+                .until(() -> {
+                    runnable.run();
+                    return true;
+                });
+    }
+
     private static void verifyLoggingFailure() {
         final Logger logger = LogManager.getLogger();
         int retryCount = 3;

[logging-log4j2] 01/02: Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e2f6b969ed67a9c79e69234d982c95ea5cbad716
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Mon Nov 1 21:49:35 2021 +0100

    Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.
---
 .../log4j/layout/template/json/JsonTemplateLayout.java      | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
index fc4548e..cf5211b 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
@@ -25,6 +25,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.layout.ByteBufferDestination;
 import org.apache.logging.log4j.core.layout.Encoder;
 import org.apache.logging.log4j.core.layout.LockingStringBuilderEncoder;
+import org.apache.logging.log4j.core.layout.StringBuilderEncoder;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.core.util.StringEncoder;
 import org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext;
@@ -203,10 +204,14 @@ public class JsonTemplateLayout implements StringLayout {
             final JsonWriter jsonWriter) {
         return () -> {
             final JsonWriter clonedJsonWriter = jsonWriter.clone();
-            final Encoder<StringBuilder> encoder =
-                    Constants.ENABLE_DIRECT_ENCODERS
-                            ? new LockingStringBuilderEncoder(charset)
-                            : null;
+            final Encoder<StringBuilder> encoder;
+            if (Constants.ENABLE_DIRECT_ENCODERS) {
+                encoder = Constants.ENABLE_THREADLOCALS
+                        ? new StringBuilderEncoder(charset)
+                        : new LockingStringBuilderEncoder(charset);
+            } else {
+                encoder = null;
+            }
             return new Context(clonedJsonWriter, encoder);
         };
     }