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

dezhiliu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 09ec578dd0b [fix][broker] Upgrade log4j2 version to 2.18.0 (#16884)
09ec578dd0b is described below

commit 09ec578dd0b710d2591b06c2ede0e2591bce84e7
Author: Dezhi LIiu <[email protected]>
AuthorDate: Tue Aug 2 16:00:49 2022 +0800

    [fix][broker] Upgrade log4j2 version to 2.18.0 (#16884)
    
    * Upgrade log4j2.version to 2.18.0
    
    * update versions in license files
    
    * fix EnvironmentBasedSecretsProviderTest error
    
    Co-authored-by: liudezhi <[email protected]>
---
 buildtools/pom.xml                                 |  2 +-
 distribution/server/src/assemble/LICENSE.bin.txt   |  8 +--
 pom.xml                                            | 13 ++++-
 .../EnvironmentBasedSecretsProviderTest.java       | 25 ++-------
 .../flume/node/TestEnvVarResolverProperties.java   | 65 +++++++++-------------
 5 files changed, 45 insertions(+), 68 deletions(-)

diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index ccf2caaf494..1583005809c 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -39,7 +39,7 @@
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <surefire.version>3.0.0-M3</surefire.version>
-    <log4j2.version>2.17.1</log4j2.version>
+    <log4j2.version>2.18.0</log4j2.version>
     <slf4j.version>1.7.32</slf4j.version>
     <testng.version>7.3.0</testng.version>
     <commons-lang3.version>3.11</commons-lang3.version>
diff --git a/distribution/server/src/assemble/LICENSE.bin.txt 
b/distribution/server/src/assemble/LICENSE.bin.txt
index 898c579809a..a92def290ee 100644
--- a/distribution/server/src/assemble/LICENSE.bin.txt
+++ b/distribution/server/src/assemble/LICENSE.bin.txt
@@ -395,10 +395,10 @@ The Apache Software License, Version 2.0
     - jakarta.validation-jakarta.validation-api-2.0.2.jar
     - javax.validation-validation-api-1.1.0.Final.jar
  * Log4J
-    - org.apache.logging.log4j-log4j-api-2.17.1.jar
-    - org.apache.logging.log4j-log4j-core-2.17.1.jar
-    - org.apache.logging.log4j-log4j-slf4j-impl-2.17.1.jar
-    - org.apache.logging.log4j-log4j-web-2.17.1.jar
+    - org.apache.logging.log4j-log4j-api-2.18.0.jar
+    - org.apache.logging.log4j-log4j-core-2.18.0.jar
+    - org.apache.logging.log4j-log4j-slf4j-impl-2.18.0.jar
+    - org.apache.logging.log4j-log4j-web-2.18.0.jar
  * Java Native Access JNA -- net.java.dev.jna-jna-4.2.0.jar
  * BookKeeper
     - org.apache.bookkeeper-bookkeeper-common-4.15.0.jar
diff --git a/pom.xml b/pom.xml
index ebac8ee8129..cbc447c0c3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,8 @@ flexible messaging model and an intuitive client 
API.</description>
     <test.additional.args>
       --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
       --add-opens java.base/java.lang=ALL-UNNAMED <!--Mockito-->
-      --add-opens java.base/java.io=ALL-UNNAMED <!--Bookkeeper NativeIO -->
+      --add-opens java.base/java.io=ALL-UNNAMED <!--Bookkeeper NativeIO-->
+      --add-opens java.base/java.util=ALL-UNNAMED <!--System Lambda-->
       --add-opens java.base/sun.net=ALL-UNNAMED <!--netty.DnsResolverUtil-->
       --add-opens java.management/sun.management=ALL-UNNAMED 
<!--JvmDefaultGCMetricsLogger-->
     </test.additional.args>
@@ -132,7 +133,7 @@ flexible messaging model and an intuitive client 
API.</description>
     <rocksdb.version>6.29.4.1</rocksdb.version>
     <slf4j.version>1.7.32</slf4j.version>
     <commons.collections4.version>4.4</commons.collections4.version>
-    <log4j2.version>2.17.1</log4j2.version>
+    <log4j2.version>2.18.0</log4j2.version>
     <bouncycastle.version>1.69</bouncycastle.version>
     <bouncycastlefips.version>1.0.2</bouncycastlefips.version>
     <jackson.version>2.13.3</jackson.version>
@@ -148,6 +149,7 @@ flexible messaging model and an intuitive client 
API.</description>
     <perfmark.version>0.19.0</perfmark.version>
     
<protoc-gen-grpc-java.version>${grpc.version}</protoc-gen-grpc-java.version>
     <gson.version>2.8.9</gson.version>
+    <system-lambda.version>1.2.1</system-lambda.version>
     <sketches.version>0.8.3</sketches.version>
     <hbc-core.version>2.2.0</hbc-core.version>
     <cassandra.version>3.11.2</cassandra.version>
@@ -1320,6 +1322,13 @@ flexible messaging model and an intuitive client 
API.</description>
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>com.github.stefanbirkner</groupId>
+      <artifactId>system-lambda</artifactId>
+      <version>${system-lambda.version}</version>
+      <scope>test</scope>
+    </dependency>
+
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-reflect</artifactId>
diff --git 
a/pulsar-functions/secrets/src/test/java/org/apache/pulsar/functions/secretsprovider/EnvironmentBasedSecretsProviderTest.java
 
b/pulsar-functions/secrets/src/test/java/org/apache/pulsar/functions/secretsprovider/EnvironmentBasedSecretsProviderTest.java
index 8dbc880fa16..ef4d41ee80c 100644
--- 
a/pulsar-functions/secrets/src/test/java/org/apache/pulsar/functions/secretsprovider/EnvironmentBasedSecretsProviderTest.java
+++ 
b/pulsar-functions/secrets/src/test/java/org/apache/pulsar/functions/secretsprovider/EnvironmentBasedSecretsProviderTest.java
@@ -21,11 +21,7 @@ package org.apache.pulsar.functions.secretsprovider;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.powermock.reflect.Whitebox;
+import com.github.stefanbirkner.systemlambda.SystemLambda;
 import org.testng.annotations.Test;
 
 public class EnvironmentBasedSecretsProviderTest {
@@ -33,22 +29,9 @@ public class EnvironmentBasedSecretsProviderTest {
     public void testConfigValidation() throws Exception {
         EnvironmentBasedSecretsProvider provider = new 
EnvironmentBasedSecretsProvider();
         assertNull(provider.provideSecret("mySecretName", "Ignored"));
-        injectEnvironmentVariable("mySecretName", "SecretValue");
-        assertEquals(provider.provideSecret("mySecretName", "Ignored"), 
"SecretValue");
+        SystemLambda.withEnvironmentVariable("mySecretName", 
"SecretValue").execute(() -> {
+            assertEquals(provider.provideSecret("mySecretName", "Ignored"), 
"SecretValue");
+        });
     }
 
-    private static void injectEnvironmentVariable(String key, String value)
-            throws Exception {
-
-        Class<?> processEnvironment = 
Class.forName("java.lang.ProcessEnvironment");
-        Map<String,String> unmodifiableMap = new HashMap<>(Whitebox
-                .getInternalState(processEnvironment, 
"theUnmodifiableEnvironment"));
-        unmodifiableMap.put(key, value);
-        Whitebox.setInternalState(processEnvironment, 
"theUnmodifiableEnvironment", unmodifiableMap);
-
-        Map<String,String> envMap = new HashMap<>(Whitebox
-                .getInternalState(processEnvironment, "theEnvironment"));
-        envMap.put(key, value);
-        Whitebox.setInternalState(processEnvironment, "theEnvironment", 
envMap);
-    }
 }
diff --git 
a/pulsar-io/flume/src/test/java/org/apache/pulsar/io/flume/node/TestEnvVarResolverProperties.java
 
b/pulsar-io/flume/src/test/java/org/apache/pulsar/io/flume/node/TestEnvVarResolverProperties.java
index 3aa540df8e5..663d55c9fcd 100644
--- 
a/pulsar-io/flume/src/test/java/org/apache/pulsar/io/flume/node/TestEnvVarResolverProperties.java
+++ 
b/pulsar-io/flume/src/test/java/org/apache/pulsar/io/flume/node/TestEnvVarResolverProperties.java
@@ -19,16 +19,13 @@
 package org.apache.pulsar.io.flume.node;
 
 import static org.testng.Assert.assertEquals;
+import com.github.stefanbirkner.systemlambda.SystemLambda;
 import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-import lombok.SneakyThrows;
-import org.powermock.reflect.Whitebox;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 public final class TestEnvVarResolverProperties {
-    private static final File TESTFILE = new File(
+    private static final File TEST_FILE = new File(
             TestEnvVarResolverProperties.class.getClassLoader()
                     
.getResource("flume-conf-with-envvars.properties").getFile());
 
@@ -36,49 +33,37 @@ public final class TestEnvVarResolverProperties {
 
     @BeforeMethod(alwaysRun = true)
     public void setUp() {
-        provider = new PropertiesFileConfigurationProvider("a1", TESTFILE);
+        provider = new PropertiesFileConfigurationProvider("a1", TEST_FILE);
     }
 
     @Test
-    public void resolveEnvVar() {
-        injectEnvironmentVariable("VARNAME", "varvalue");
-        String resolved = EnvVarResolverProperties.resolveEnvVars("padding 
${VARNAME} padding");
-        assertEquals(resolved, "padding varvalue padding");
+    public void resolveEnvVar() throws Exception {
+        SystemLambda.withEnvironmentVariable("VARNAME", "varvalue").execute(() 
-> {
+            String resolved = EnvVarResolverProperties.resolveEnvVars("padding 
${VARNAME} padding");
+            assertEquals(resolved, "padding varvalue padding");
+        });
     }
 
     @Test
-    public void resolveEnvVars() {
-        injectEnvironmentVariable("VARNAME1", "varvalue1");
-        injectEnvironmentVariable("VARNAME2", "varvalue2");
-        String resolved = EnvVarResolverProperties
-                .resolveEnvVars("padding ${VARNAME1} ${VARNAME2} padding");
-        assertEquals(resolved, "padding varvalue1 varvalue2 padding");
+    public void resolveEnvVars() throws Exception {
+        SystemLambda.withEnvironmentVariable("VARNAME1", "varvalue1")
+                .and("VARNAME2", "varvalue2")
+                .execute(() -> {
+                    String resolved = EnvVarResolverProperties.resolveEnvVars(
+                            "padding ${VARNAME1} ${VARNAME2} padding");
+                    assertEquals(resolved, "padding varvalue1 varvalue2 
padding");
+                });
     }
 
     @Test
-    public void getProperty() {
-        String NC_PORT = "6667";
-        injectEnvironmentVariable("NC_PORT", NC_PORT);
-        System.setProperty("propertiesImplementation",
-                "org.apache.pulsar.io.flume.node.EnvVarResolverProperties");
+    public void getProperty() throws Exception {
+        SystemLambda.withEnvironmentVariable("NC_PORT", "6667").execute(() -> {
+            System.setProperty("propertiesImplementation",
+                    
"org.apache.pulsar.io.flume.node.EnvVarResolverProperties");
 
-        assertEquals(provider.getFlumeConfiguration()
-                .getConfigurationFor("a1")
-                .getSourceContext().get("r1").getParameters().get("port"), 
NC_PORT);
+            assertEquals(provider.getFlumeConfiguration()
+                    .getConfigurationFor("a1")
+                    .getSourceContext().get("r1").getParameters().get("port"), 
"6667");
+        });
     }
-
-    @SneakyThrows
-    private static void injectEnvironmentVariable(String key, String value) {
-
-        Class<?> processEnvironment = 
Class.forName("java.lang.ProcessEnvironment");
-        Map<String,String> unmodifiableMap = new HashMap<>(Whitebox
-                .getInternalState(processEnvironment, 
"theUnmodifiableEnvironment"));
-        unmodifiableMap.put(key, value);
-        Whitebox.setInternalState(processEnvironment, 
"theUnmodifiableEnvironment", unmodifiableMap);
-
-        Map<String,String> envMap = new HashMap<>(Whitebox
-                .getInternalState(processEnvironment, "theEnvironment"));
-        envMap.put(key, value);
-        Whitebox.setInternalState(processEnvironment, "theEnvironment", 
envMap);
-    }
-}
+}
\ No newline at end of file

Reply via email to