You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2020/09/29 02:34:42 UTC

[skywalking] branch master updated: Support JDK 11 compiling and upgrade dependencies (#5579)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 103cf00  Support JDK 11 compiling and upgrade dependencies (#5579)
103cf00 is described below

commit 103cf00672c4ed61b17626314ab2b6b31f1dc9c4
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Sep 29 10:34:21 2020 +0800

    Support JDK 11 compiling and upgrade dependencies (#5579)
    
    * Upgrade dependencies and make the JDK11 compiling passed.
    
    * Update license and fix license check file.
    
    * Add CI for JDK11 compiling.
    
    * Update doc.
---
 .github/workflows/ci-it.yaml                       |  13 ++
 apm-application-toolkit/pom.xml                    |   4 -
 apm-commons/pom.xml                                |   1 -
 apm-protocol/apm-network/pom.xml                   |   6 +
 apm-sniffer/apm-agent-core/pom.xml                 |   6 +-
 .../agent/core/logging/core/WriterFactoryTest.java |   2 -
 .../apm/agent/core/meter/CounterTest.java          |   2 +-
 .../skywalking/apm/agent/core/meter/GaugeTest.java |   9 +-
 .../apm/agent/core/meter/HistogramTest.java        |  15 +-
 .../apm/agent/core/meter/MeterIdTest.java          |   9 +-
 .../apm-sdk-plugin/armeria-0.85.x-plugin/pom.xml   |   3 -
 .../apm/plugin/jdbc/SWCallableStatementTest.java   |   8 +-
 .../apm/plugin/jdbc/SwPreparedStatementTest.java   |   4 +-
 .../apm-sdk-plugin/lettuce-5.x-plugin/pom.xml      |   1 -
 apm-sniffer/apm-sdk-plugin/pom.xml                 |   6 +
 .../apm-sdk-plugin/redisson-3.x-plugin/pom.xml     |   1 -
 .../v3/RedisConnectionMethodInterceptorTest.java   |  12 +-
 .../TransportClientHandlerInterceptorTest.java     |   2 +-
 .../v1/TransportClientHandlerInterceptorTest.java  |   2 +-
 .../spring/mvc/v3/GetBeanInterceptorTest.java      |  64 -------
 .../spring-webflux-5.x-webclient-plugin/pom.xml    |   4 -
 .../apm-sdk-plugin/struts2-2.x-plugin/pom.xml      |  14 ++
 .../meter/CounterConstructInterceptorTest.java     |  13 +-
 .../meter/GaugeConstructInterceptorTest.java       |  12 +-
 .../meter/HistogramConstructInterceptorTest.java   |  13 +-
 .../gateway-2.0.x-plugin/pom.xml                   |   1 -
 .../gateway-2.1.x-plugin/pom.xml                   |   1 -
 .../spring-webflux-5.x-plugin/pom.xml              |   4 -
 apm-webapp/pom.xml                                 |  15 +-
 dist-material/release-docs/LICENSE                 |  13 +-
 docs/en/guides/How-to-build.md                     |   4 +-
 .../provider/meter/process/MeterBaseTest.java      |  37 ++--
 .../provider/meter/process/MeterBuilderTest.java   |  12 +-
 .../meter/process/MeterProcessContextTest.java     |   4 +-
 .../provider/meter/process/MeterProcessorTest.java |  29 ++--
 oap-server/pom.xml                                 |  16 +-
 .../core/alarm/provider/NotifyHandlerTest.java     |   2 +-
 .../consul/ClusterModuleConsulProviderTest.java    |   2 +-
 .../plugin/etcd/ClusterModuleEtcdProviderTest.java | 119 -------------
 .../cluster/plugin/etcd/EtcdCoordinatorTest.java   | 192 ---------------------
 .../ClusterModuleKubernetesProviderTest.java       |   2 +-
 .../kubernetes/KubernetesCoordinatorTest.java      |   2 +-
 .../nacos/ClusterModuleNacosProviderTest.java      | 109 ------------
 .../ConsulConfigurationWatcherRegisterTest.java    |  17 +-
 .../configuration-etcd/pom.xml                     |  13 ++
 .../etcd/EtcdConfigWatcherRegisterTest.java        | 134 --------------
 .../ConfigmapConfigWatcherRegisterTest.java        |   2 +-
 .../ConfigmapConfigurationProviderTest.java        |   2 +-
 .../oap/server/core/analysis/TimeBucketTest.java   |   4 +-
 .../core/storage/model/StorageModelsTest.java      |   2 +
 oap-server/server-library/library-util/pom.xml     |   5 +-
 .../envoy-metrics-receiver-plugin/pom.xml          |  10 +-
 .../rest/BrowserReportServletHandlerTest.java      |   4 +-
 .../rest/TraceSegmentReportServletHandlerTest.java |   6 +-
 .../exporter/test/ProfileSnapshotExporterTest.java |   2 +-
 pom.xml                                            |  50 ++++--
 test/plugin/scenarios/gson-scenario/pom.xml        |   1 -
 test/plugin/scenarios/hystrix-scenario/pom.xml     |   2 -
 .../known-oap-backend-dependencies-es7.txt         |  28 ++-
 .../known-oap-backend-dependencies.txt             |  28 ++-
 60 files changed, 289 insertions(+), 811 deletions(-)

diff --git a/.github/workflows/ci-it.yaml b/.github/workflows/ci-it.yaml
index 7d11580..bde6ff0 100644
--- a/.github/workflows/ci-it.yaml
+++ b/.github/workflows/ci-it.yaml
@@ -48,6 +48,19 @@ jobs:
       - name: 'Check Dependencies Licenses'
         run: tools/dependencies/check-LICENSE.sh
 
+  CI-on-JDK11:
+    runs-on: ubuntu-18.04
+    timeout-minutes: 90
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: true
+      - uses: actions/setup-java@v1
+        with:
+          java-version: 11
+      - name: 'Install & Test'
+        run: ./mvnw --batch-mode -P"agent,backend,ui,dist" clean verify install
+
   CI-on-Windows:
     runs-on: windows-latest
     timeout-minutes: 90
diff --git a/apm-application-toolkit/pom.xml b/apm-application-toolkit/pom.xml
index b6fc988..ec762d4 100644
--- a/apm-application-toolkit/pom.xml
+++ b/apm-application-toolkit/pom.xml
@@ -26,10 +26,6 @@
     <artifactId>apm-application-toolkit</artifactId>
     <packaging>pom</packaging>
 
-    <properties>
-        <compiler.version>1.8</compiler.version>
-    </properties>
-
     <modules>
         <module>apm-toolkit-log4j-1.x</module>
         <module>apm-toolkit-log4j-2.x</module>
diff --git a/apm-commons/pom.xml b/apm-commons/pom.xml
index d8a3c7c..5d772be 100644
--- a/apm-commons/pom.xml
+++ b/apm-commons/pom.xml
@@ -37,6 +37,5 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <compiler.version>1.8</compiler.version>
     </properties>
 </project>
diff --git a/apm-protocol/apm-network/pom.xml b/apm-protocol/apm-network/pom.xml
index a5497ec..a8fc525 100644
--- a/apm-protocol/apm-network/pom.xml
+++ b/apm-protocol/apm-network/pom.xml
@@ -52,6 +52,12 @@
             <artifactId>netty-tcnative-boringssl-static</artifactId>
             <version>${netty-tcnative-boringssl-static.version}</version>
         </dependency>
+        <dependency> <!-- necessary for Java 9+ -->
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>annotations-api</artifactId>
+            <version>${org.apache.tomcat.annotations-api.version}</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/apm-sniffer/apm-agent-core/pom.xml b/apm-sniffer/apm-agent-core/pom.xml
index 0d1d27f..8056db3 100644
--- a/apm-sniffer/apm-agent-core/pom.xml
+++ b/apm-sniffer/apm-agent-core/pom.xml
@@ -34,7 +34,6 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <guava.version>20.0</guava.version>
-        <bytebuddy.version>1.10.14</bytebuddy.version>
         <wiremock.version>2.6.0</wiremock.version>
         <netty-tcnative-boringssl-static.version>2.0.7.Final</netty-tcnative-boringssl-static.version>
         <os-maven-plugin.version>1.4.1.Final</os-maven-plugin.version>
@@ -68,6 +67,11 @@
             <artifactId>byte-buddy</artifactId>
             <version>${bytebuddy.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>net.bytebuddy</groupId>
diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactoryTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactoryTest.java
index d866d42..0cfd717 100644
--- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactoryTest.java
+++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactoryTest.java
@@ -49,7 +49,6 @@ public class WriterFactoryTest {
         assertTrue(AgentPackagePath.isPathFound());
 
         IWriter logWriter = WriterFactory.getLogWriter();
-        PowerMockito.verifyStatic();
         assertTrue(logWriter instanceof SystemOutWriter);
     }
 
@@ -65,7 +64,6 @@ public class WriterFactoryTest {
         assertTrue(AgentPackagePath.isPathFound());
 
         IWriter logWriter = WriterFactory.getLogWriter();
-        PowerMockito.verifyStatic();
         assertTrue(logWriter instanceof FileWriter);
     }
 }
\ No newline at end of file
diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/CounterTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/CounterTest.java
index 2df98aa..117e449 100644
--- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/CounterTest.java
+++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/CounterTest.java
@@ -28,11 +28,11 @@ import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
+import org.powermock.reflect.Whitebox;
 
 public class CounterTest {
     @Rule
diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/GaugeTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/GaugeTest.java
index de0441d..e0efaf5 100644
--- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/GaugeTest.java
+++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/GaugeTest.java
@@ -18,6 +18,9 @@
 
 package org.apache.skywalking.apm.agent.core.meter;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule;
 import org.apache.skywalking.apm.network.language.agent.v3.Label;
@@ -28,11 +31,7 @@ import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
+import org.powermock.reflect.Whitebox;
 
 public class GaugeTest {
     @Rule
diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/HistogramTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/HistogramTest.java
index cab8626..bd6b2b8 100644
--- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/HistogramTest.java
+++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/HistogramTest.java
@@ -18,6 +18,9 @@
 
 package org.apache.skywalking.apm.agent.core.meter;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule;
 import org.apache.skywalking.apm.network.language.agent.v3.Label;
@@ -28,11 +31,7 @@ import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
+import org.powermock.reflect.Whitebox;
 
 public class HistogramTest {
     @Rule
@@ -66,7 +65,11 @@ public class HistogramTest {
         final List<Label> labels = Arrays.asList(Label.newBuilder().setName("k1").setValue("v1").build());
 
         // Check histogram message
-        final Histogram histogram = MeterFactory.histogram("test").steps(Arrays.asList(2d, 5d)).minValue(1d).tag("k1", "v1").build();
+        final Histogram histogram = MeterFactory.histogram("test")
+                                                .steps(Arrays.asList(2d, 5d))
+                                                .minValue(1d)
+                                                .tag("k1", "v1")
+                                                .build();
         histogram.addValue(1);
         histogram.addValue(3);
         histogram.addValue(3);
diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/MeterIdTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/MeterIdTest.java
index 11512e6..7ccc3a7 100644
--- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/MeterIdTest.java
+++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/meter/MeterIdTest.java
@@ -18,14 +18,13 @@
 
 package org.apache.skywalking.apm.agent.core.meter;
 
-import org.apache.skywalking.apm.network.language.agent.v3.Label;
-import org.junit.Assert;
-import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import org.apache.skywalking.apm.network.language.agent.v3.Label;
+import org.junit.Assert;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
 
 public class MeterIdTest {
 
diff --git a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/pom.xml
index abbc932..6e6adb5 100644
--- a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/pom.xml
@@ -28,9 +28,6 @@
     <name>armeria-0.85.x-plugin</name>
     <packaging>jar</packaging>
     <description>SkyWalking Agent Plugin for Armeria 0.85.0 ~ 0.98.0</description>
-    <properties>
-        <compiler.version>1.8</compiler.version>
-    </properties>
 
     <dependencies>
         <dependency>
diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java
index 31dd18f..d089522 100644
--- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java
+++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java
@@ -325,10 +325,10 @@ public class SWCallableStatementTest extends AbstractStatementTest {
         verify(mysqlCallableStatement).setBlob(anyInt(), any(InputStream.class), anyLong());
         verify(mysqlCallableStatement).setClob(anyInt(), any(Clob.class));
         verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class));
-        verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class), anyInt());
+        verify(mysqlCallableStatement).setClob(anyInt(), any(Reader.class), anyLong());
         verify(mysqlCallableStatement).setNString(anyInt(), anyString());
         verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class));
-        verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class), anyInt());
+        verify(mysqlCallableStatement).setNCharacterStream(anyInt(), any(Reader.class), anyLong());
         verify(mysqlCallableStatement).setNClob(27, nClob);
         verify(mysqlCallableStatement).setNClob(28, reader, 1);
         verify(mysqlCallableStatement).setObject(anyInt(), Matchers.anyObject());
@@ -377,10 +377,10 @@ public class SWCallableStatementTest extends AbstractStatementTest {
         verify(mysqlCallableStatement).setBlob(anyString(), any(InputStream.class), anyLong());
         verify(mysqlCallableStatement).setClob(anyString(), any(Clob.class));
         verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class));
-        verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class), anyInt());
+        verify(mysqlCallableStatement).setClob(anyString(), any(Reader.class), anyLong());
         verify(mysqlCallableStatement).setNString(anyString(), anyString());
         verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class));
-        verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class), anyInt());
+        verify(mysqlCallableStatement).setNCharacterStream(anyString(), any(Reader.class), anyLong());
         verify(mysqlCallableStatement).setNClob(27, nClob);
         verify(mysqlCallableStatement).setNClob(28, reader, 1);
         verify(mysqlCallableStatement).setObject(anyString(), Matchers.anyObject());
diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java
index 78ff7b5..fee705c 100644
--- a/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java
+++ b/apm-sniffer/apm-sdk-plugin/jdbc-commons/src/test/java/org/apache/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java
@@ -206,10 +206,10 @@ public class SwPreparedStatementTest extends AbstractStatementTest {
         verify(mysqlPreparedStatement).setBlob(anyInt(), any(InputStream.class), anyLong());
         verify(mysqlPreparedStatement).setClob(anyInt(), any(Clob.class));
         verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class));
-        verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class), anyInt());
+        verify(mysqlPreparedStatement).setClob(anyInt(), any(Reader.class), anyLong());
         verify(mysqlPreparedStatement).setNString(anyInt(), anyString());
         verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class));
-        verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class), anyInt());
+        verify(mysqlPreparedStatement).setNCharacterStream(anyInt(), any(Reader.class), anyLong());
         verify(mysqlPreparedStatement).setNClob(27, nClob);
         verify(mysqlPreparedStatement).setNClob(28, reader, 1);
         verify(mysqlPreparedStatement).setObject(anyInt(), Matchers.anyObject());
diff --git a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/pom.xml
index 20aa6d3..fa757b3 100644
--- a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/pom.xml
@@ -32,7 +32,6 @@
     <url>http://maven.apache.org</url>
     <properties>
         <lettuce-core.version>5.1.3.RELEASE</lettuce-core.version>
-        <compiler.version>1.8</compiler.version>
     </properties>
 
     <dependencies>
diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml
index 78e6696..383e55f 100644
--- a/apm-sniffer/apm-sdk-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/pom.xml
@@ -128,6 +128,12 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy</artifactId>
+            <version>${bytebuddy.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.skywalking</groupId>
             <artifactId>apm-util</artifactId>
             <version>${project.version}</version>
diff --git a/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/pom.xml
index fcbceb8..c278012 100644
--- a/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/pom.xml
@@ -41,6 +41,5 @@
             <version>${redisson.version}</version>
             <scope>provided</scope>
         </dependency>
-
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/redisson/v3/RedisConnectionMethodInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/redisson/v3/RedisConnectionMethodInterceptorTest.java
index 513564b..c315ec0 100644
--- a/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/redisson/v3/RedisConnectionMethodInterceptorTest.java
+++ b/apm-sniffer/apm-sdk-plugin/redisson-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/redisson/v3/RedisConnectionMethodInterceptorTest.java
@@ -30,7 +30,6 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
 import org.redisson.config.Config;
@@ -45,9 +44,7 @@ public class RedisConnectionMethodInterceptorTest {
     @Rule
     public AgentServiceRule serviceRule = new AgentServiceRule();
 
-    @Mock
     private MockInstance mockRedisClientInstance;
-    @Mock
     private MockInstance mockRedisConnectionInstance;
 
     private RedisConnectionMethodInterceptor interceptor;
@@ -67,8 +64,8 @@ public class RedisConnectionMethodInterceptorTest {
     }
 
     @SuppressWarnings({
-            "rawtypes",
-            "unchecked"
+        "rawtypes",
+        "unchecked"
     })
     @Before
     public void setUp() throws Exception {
@@ -80,8 +77,9 @@ public class RedisConnectionMethodInterceptorTest {
 
     @Test
     public void testIntercept() throws Throwable {
-        interceptor.onConstruct(mockRedisConnectionInstance, new Object[]{mockRedisClientInstance});
-        MatcherAssert.assertThat((String) mockRedisConnectionInstance.getSkyWalkingDynamicField(), Is.is("127.0.0.1:6379;127.0.0.1:6378;"));
+        interceptor.onConstruct(mockRedisConnectionInstance, new Object[] {mockRedisClientInstance});
+        MatcherAssert.assertThat(
+            (String) mockRedisConnectionInstance.getSkyWalkingDynamicField(), Is.is("127.0.0.1:6379;127.0.0.1:6378;"));
     }
 
     @Test
diff --git a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/TransportClientHandlerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/TransportClientHandlerInterceptorTest.java
index 3a352ba..16355be 100644
--- a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/TransportClientHandlerInterceptorTest.java
+++ b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-0.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/TransportClientHandlerInterceptorTest.java
@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest {
         nextInterceptor = new TransportClientHandlerInterceptor();
         PowerMockito.mock(Invocation.class);
         when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta);
-        when(endpoint.getAddress()).thenReturn("0.0.0.0:7777");
+        when(endpoint.toString()).thenReturn("/bmi");
         when(invocation.getEndpoint()).thenReturn(endpoint);
         when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest");
         when(operationMeta.getOperationPath()).thenReturn("/bmi");
diff --git a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-1.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/v1/TransportClientHandlerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-1.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/v1/TransportClientHandlerInterceptorTest.java
index 595e49d..0095d02 100644
--- a/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-1.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/v1/TransportClientHandlerInterceptorTest.java
+++ b/apm-sniffer/apm-sdk-plugin/servicecomb-plugin/servicecomb-java-chassis-1.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/servicecomb/v1/TransportClientHandlerInterceptorTest.java
@@ -91,7 +91,7 @@ public class TransportClientHandlerInterceptorTest {
         nextInterceptor = new TransportClientHandlerInterceptor();
         PowerMockito.mock(Invocation.class);
         when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta);
-        when(endpoint.getAddress()).thenReturn("0.0.0.0:7777");
+        when(endpoint.toString()).thenReturn("/bmi");
         when(invocation.getEndpoint()).thenReturn(endpoint);
         when(invocation.getMicroserviceQualifiedName()).thenReturn("consumerTest");
         when(operationMeta.getOperationPath()).thenReturn("/bmi");
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java
deleted file mode 100644
index b4ec3f5..0000000
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.apm.plugin.spring.mvc.v3;
-
-import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
-import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache;
-import org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.GetBeanInterceptor;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Matchers;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.springframework.web.context.request.NativeWebRequest;
-
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public class GetBeanInterceptorTest {
-
-    @Mock
-    private EnhancedInstance enhancedInstance;
-
-    @Mock
-    private NativeWebRequest request;
-
-    @Mock
-    private EnhancedInstance enhanceRet;
-
-    private GetBeanInterceptor interceptor;
-
-    @Before
-    public void setUp() {
-        interceptor = new GetBeanInterceptor();
-
-        when(enhanceRet.getSkyWalkingDynamicField()).thenReturn(new EnhanceRequireObjectCache());
-        when(enhancedInstance.getSkyWalkingDynamicField()).thenReturn(request);
-    }
-
-    @Test
-    public void testResultIsNotEnhanceInstance() throws Throwable {
-        interceptor.afterMethod(enhancedInstance, null, null, null, new Object());
-
-        verify(enhanceRet, times(0)).setSkyWalkingDynamicField(Matchers.any());
-    }
-}
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/pom.xml
index 076cfa0..6948125 100644
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-webflux-5.x-webclient-plugin/pom.xml
@@ -37,8 +37,4 @@
             <scope>provided</scope>
         </dependency>
     </dependencies>
-
-    <properties>
-        <compiler.version>1.8</compiler.version>
-    </properties>
 </project>
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml
index 5c54b93..32fe5cf 100644
--- a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml
@@ -43,6 +43,14 @@
             <artifactId>struts2-core</artifactId>
             <version>${struts2-core.version}</version>
             <scope>provided</scope>
+            <exclusions>
+                <!-- The default javassist is not compatible with 3.x power mock. -->
+                <!-- Manually add the dependency back for test below. -->
+                <exclusion>
+                    <groupId>javassist</groupId>
+                    <artifactId>javassist</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
@@ -56,5 +64,11 @@
             <version>${jsp-api.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.javassist</groupId>
+            <artifactId>javassist</artifactId>
+            <version>3.24.0-GA</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/CounterConstructInterceptorTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/CounterConstructInterceptorTest.java
index 38838db..15c144d 100644
--- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/CounterConstructInterceptorTest.java
+++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/CounterConstructInterceptorTest.java
@@ -18,6 +18,8 @@
 
 package org.apache.skywalking.apm.toolkit.activation.meter;
 
+import java.util.Arrays;
+import java.util.Map;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
 import org.apache.skywalking.apm.agent.core.meter.MeterService;
@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.util.Arrays;
-import java.util.Map;
+import org.powermock.reflect.Whitebox;
 
 public class CounterConstructInterceptorTest {
 
@@ -47,10 +46,12 @@ public class CounterConstructInterceptorTest {
     public void testConstruct() {
         counterConstructInterceptor.onConstruct(enhancedInstance, new Object[] {
             new MeterId("test", MeterId.MeterType.COUNTER, Arrays.asList(new MeterId.Tag("k1", "v1"))),
-            Counter.Mode.RATE});
+            Counter.Mode.RATE
+        });
 
         final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
-        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap");
+        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
+            service, "meterMap");
         Assert.assertEquals(1, meterMap.size());
 
         final BaseMeter meterData = meterMap.values().iterator().next();
diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/GaugeConstructInterceptorTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/GaugeConstructInterceptorTest.java
index ff4555f..7c7107b 100644
--- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/GaugeConstructInterceptorTest.java
+++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/GaugeConstructInterceptorTest.java
@@ -18,6 +18,9 @@
 
 package org.apache.skywalking.apm.toolkit.activation.meter;
 
+import java.util.Arrays;
+import java.util.Map;
+import java.util.function.Supplier;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
 import org.apache.skywalking.apm.agent.core.meter.Gauge;
@@ -30,11 +33,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.function.Supplier;
+import org.powermock.reflect.Whitebox;
 
 public class GaugeConstructInterceptorTest {
 
@@ -52,7 +51,8 @@ public class GaugeConstructInterceptorTest {
         });
 
         final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
-        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap");
+        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
+            service, "meterMap");
         Assert.assertEquals(1, meterMap.size());
 
         final Object field = meterMap.values().iterator().next();
diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/HistogramConstructInterceptorTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/HistogramConstructInterceptorTest.java
index fc65463..62c43b5 100644
--- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/HistogramConstructInterceptorTest.java
+++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-meter-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/meter/HistogramConstructInterceptorTest.java
@@ -18,6 +18,8 @@
 
 package org.apache.skywalking.apm.toolkit.activation.meter;
 
+import java.util.Arrays;
+import java.util.Map;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.meter.BaseMeter;
 import org.apache.skywalking.apm.agent.core.meter.Histogram;
@@ -30,10 +32,7 @@ import org.apache.skywalking.apm.toolkit.meter.MeterId;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-
-import java.util.Arrays;
-import java.util.Map;
+import org.powermock.reflect.Whitebox;
 
 public class HistogramConstructInterceptorTest {
 
@@ -47,10 +46,12 @@ public class HistogramConstructInterceptorTest {
     public void testConstruct() {
         histogramConstructInterceptor.onConstruct(enhancedInstance, new Object[] {
             new MeterId("test", MeterId.MeterType.HISTOGRAM, Arrays.asList(new MeterId.Tag("k1", "v1"))),
-            Arrays.asList(1d, 5d, 10d)});
+            Arrays.asList(1d, 5d, 10d)
+        });
 
         final MeterService service = ServiceManager.INSTANCE.findService(MeterService.class);
-        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(service, "meterMap");
+        final Map<MeterId, BaseMeter> meterMap = (Map<MeterId, BaseMeter>) Whitebox.getInternalState(
+            service, "meterMap");
         Assert.assertEquals(1, meterMap.size());
 
         final Object field = meterMap.values().iterator().next();
diff --git a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.0.x-plugin/pom.xml b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.0.x-plugin/pom.xml
index 8301d68..6745114 100644
--- a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.0.x-plugin/pom.xml
+++ b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.0.x-plugin/pom.xml
@@ -34,7 +34,6 @@
 
     <properties>
         <spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version>
-        <compiler.version>1.8</compiler.version>
     </properties>
 
     <dependencies>
diff --git a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/pom.xml b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/pom.xml
index 643da0a..34e9ae2 100644
--- a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/pom.xml
+++ b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/pom.xml
@@ -35,7 +35,6 @@
 
     <properties>
         <spring-cloud-starter-gateway.version>2.1.1.RELEASE</spring-cloud-starter-gateway.version>
-        <compiler.version>1.8</compiler.version>
     </properties>
 
     <dependencies>
diff --git a/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/pom.xml b/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/pom.xml
index 85672e8..8128372 100644
--- a/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/pom.xml
+++ b/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/pom.xml
@@ -37,8 +37,4 @@
             <scope>provided</scope>
         </dependency>
     </dependencies>
-
-    <properties>
-        <compiler.version>1.8</compiler.version>
-    </properties>
 </project>
diff --git a/apm-webapp/pom.xml b/apm-webapp/pom.xml
index 6571957..dcc1c3d 100644
--- a/apm-webapp/pom.xml
+++ b/apm-webapp/pom.xml
@@ -29,7 +29,6 @@
     <packaging>jar</packaging>
 
     <properties>
-        <compiler.version>1.8</compiler.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <spring.boot.version>1.5.11.RELEASE</spring.boot.version>
         <log4j.version>2.6.2</log4j.version>
@@ -98,16 +97,22 @@
             <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
         </dependency>
         <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>${logback-classic.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <version>${spring.boot.version}</version>
             <scope>test</scope>
         </dependency>
-
+        <!-- Add for JDK9+ -->
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>${logback-classic.version}</version>
+            <groupId>com.sun.activation</groupId>
+            <artifactId>javax.activation</artifactId>
+            <version>1.2.0</version>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 
diff --git a/dist-material/release-docs/LICENSE b/dist-material/release-docs/LICENSE
index 4de0ed5..e3212ba 100755
--- a/dist-material/release-docs/LICENSE
+++ b/dist-material/release-docs/LICENSE
@@ -226,12 +226,11 @@ The following components are provided under the Apache License. See project link
 The text of each license is the standard Apache 2.0 license.
 
     raphw (byte-buddy) 1.10.14: http://bytebuddy.net/ , Apache 2.0
-    Google: gprc-java 1.26.0: https://github.com/grpc/grpc-java, Apache 2.0
+    Google: gprc-java 1.32.1: https://github.com/grpc/grpc-java, Apache 2.0
     Google: guava 28.1: https://github.com/google/guava , Apache 2.0
     Google: guice 4.1.0: https://github.com/google/guice , Apache 2.0
     Google: gson 2.8.6: https://github.com/google/gson , Apache 2.0
-    Google: opencensus-java 0.24.0: https://github.com/census-instrumentation/opencensus-java , Apache 2.0
-    Google: proto-google-common-protos 1.12.0: https://github.com/googleapis/googleapis , Apache 2.0
+    Google: proto-google-common-protos 1.17.0: https://github.com/googleapis/googleapis , Apache 2.0
     Google: jsr305 3.0.2: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom , Apache 2.0
     Elasticsearch BV (Elasticsearch) 6.3.2: https://www.elastic.co/products/elasticsearch , Apache 2.0
     Elasticsearch BV (Elasticsearch) 7.0.0: https://www.elastic.co/products/elasticsearch , Apache 2.0
@@ -241,8 +240,6 @@ The text of each license is the standard Apache 2.0 license.
     percolator-client 5.5.0: https://github.com/elastic/elasticsearch/tree/master/modules/percolator , Apache 2.0
     rest 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/rest , Apache 2.0
     transport 5.5.0: https://github.com/elastic/elasticsearch/tree/master/client/transport , Apache 2.0
-    transport-netty3-client 5.5.0: http://central.maven.org/maven2/org/elasticsearch/plugin/transport-netty3-client/5.5.0/transport-netty3-client-5.5.0.pom , Apache 2.0
-    transport-netty4-client 5.5.0: http://central.maven.org/maven2/org/elasticsearch/plugin/transport-netty4-client/5.5.0/transport-netty4-client-5.5.0.pom , Apache 2.0
     securesm 1.1: https://github.com/elastic/securesm/blob/master/pom.xml , Apache 2.0
     LMAX Ltd.(disruptor) 3.3.6: https://github.com/LMAX-Exchange/disruptor , Apache 2.0
     Eclipse (Jetty) 9.4.28.v20200408: https://www.eclipse.org/jetty/ , Apache 2.0 and Eclipse Public License 1.0
@@ -271,7 +268,7 @@ The text of each license is the standard Apache 2.0 license.
     Apache: commons-collections4 4.1: https://mvnrepository.com/artifact/org.apache.commons/commons-collections4, Apache 2.0
     Apache: tomcat 8.5.27: https://github.com/apache/tomcat/tree/trunk, Apache 2.0
     Apache: freemarker 2.3.28: https://github.com/apache/freemarker, Apache 2.0
-    netty 5.5.0: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0
+    netty 4.1.12: https://github.com/netty/netty/blob/4.1/LICENSE.txt, Apache 2.0
     annotations 13.0: http://www.jetbrains.org, Apache 2.0
     compiler 0.9.3: https://github.com/spullara/mustache.java, Apache 2.0
     error_prone_annotations 2.3.2: https://github.com/google/error-prone, Apache 2.0
@@ -378,8 +375,8 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
     asm 8.0.1:https://gitlab.ow2.org , BSD-3-Clause
     antlr4-runtime 4.5.1: http://www.antlr.org/license.html, BSD-3-Clause
     jline 0.9.94: http://mvnrepository.com/artifact/jline/jline/0.9.94, BSD
-    Google: protobuf-java 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
-    Google: protobuf-java-util 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
+    Google: protobuf-java 3.13.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
+    Google: protobuf-java-util 3.12.4: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
     reflectasm 1.11.3: https://github.com/EsotericSoftware/reflectasm , BSD-3-Clause
 
     proto files from gogo: https://github.com/gogo/protobuf  BSD-2
diff --git a/docs/en/guides/How-to-build.md b/docs/en/guides/How-to-build.md
index 2bd97f7..1d47446 100644
--- a/docs/en/guides/How-to-build.md
+++ b/docs/en/guides/How-to-build.md
@@ -16,7 +16,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu
 ```
 
 ### Build from GitHub
-1. Prepare git, JDK8 and Maven 3.6+
+1. Prepare git, JDK8+ and Maven 3.6+
 1. Clone project
 
     If you want to build a release from source codes, provide a `tag name` by using `git clone -b [tag_name] ...` while cloning.
@@ -41,7 +41,7 @@ If you need to execute build behind the proxy, edit the *.mvn/jvm.config* and pu
 
 For each official Apache release, there is a complete and independent source code tar, which is including all source codes. You could download it from [SkyWalking Apache download page](http://skywalking.apache.org/downloads/). No git related stuff required when compiling this. Just follow these steps.
 
-1. Prepare JDK8 and Maven 3.6+
+1. Prepare JDK8+ and Maven 3.6+
 1. Run `./mvnw clean package -DskipTests`
 1. All packages are in `/dist`.(.tar.gz for Linux and .zip for Windows).
 
diff --git a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBaseTest.java b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBaseTest.java
index c3e392d..d3e1ad9 100644
--- a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBaseTest.java
+++ b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBaseTest.java
@@ -39,7 +39,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleManager;
 import org.junit.Before;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Mockito.when;
 
@@ -90,19 +90,32 @@ public abstract class MeterBaseTest {
         timestamp = System.currentTimeMillis();
         // single value
         processor.read(MeterData.newBuilder()
-            .setService("service").setServiceInstance("instance").setTimestamp(timestamp)
-            .setSingleValue(MeterSingleValue.newBuilder().setName("test_count1")
-                .addLabels(Label.newBuilder().setName("k1").setValue("v1").build()).setValue(1).build())
-            .build());
+                                .setService("service").setServiceInstance("instance").setTimestamp(timestamp)
+                                .setSingleValue(MeterSingleValue.newBuilder().setName("test_count1")
+                                                                .addLabels(Label.newBuilder()
+                                                                                .setName("k1")
+                                                                                .setValue("v1")
+                                                                                .build()).setValue(1).build())
+                                .build());
 
         // histogram
         processor.read(MeterData.newBuilder()
-            .setHistogram(MeterHistogram.newBuilder().setName("test_histogram")
-                .addLabels(Label.newBuilder().setName("k2").setValue("v2").build())
-                .addValues(MeterBucketValue.newBuilder().setBucket(1).setCount(10).build())
-                .addValues(MeterBucketValue.newBuilder().setBucket(5).setCount(15).build())
-                .addValues(MeterBucketValue.newBuilder().setBucket(10).setCount(3).build())
-                .build())
-            .build());
+                                .setHistogram(MeterHistogram.newBuilder().setName("test_histogram")
+                                                            .addLabels(
+                                                                Label.newBuilder().setName("k2").setValue("v2").build())
+                                                            .addValues(MeterBucketValue.newBuilder()
+                                                                                       .setBucket(1)
+                                                                                       .setCount(10)
+                                                                                       .build())
+                                                            .addValues(MeterBucketValue.newBuilder()
+                                                                                       .setBucket(5)
+                                                                                       .setCount(15)
+                                                                                       .build())
+                                                            .addValues(MeterBucketValue.newBuilder()
+                                                                                       .setBucket(10)
+                                                                                       .setCount(3)
+                                                                                       .build())
+                                                            .build())
+                                .build());
     }
 }
diff --git a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBuilderTest.java b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBuilderTest.java
index b92fd40..8a4a63e 100644
--- a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBuilderTest.java
+++ b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterBuilderTest.java
@@ -31,27 +31,28 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doCallRealMethod;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class MeterBuilderTest extends MeterBaseTest {
 
     @Test
     public void testBuildAndSend() throws ModuleStartException {
         List<AcceptableValue> values = new ArrayList<>();
         doAnswer(invocationOnMock -> {
-            values.add(invocationOnMock.getArgumentAt(0, AcceptableValue.class));
+            values.add(invocationOnMock.getArgument(0, AcceptableValue.class));
             return null;
         }).when(meterSystem).doStreamingCalculation(any());
 
-        final MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(processor, "processService");
+        final MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(
+            processor, "processService");
         context.enabledBuilders().stream().peek(b -> doCallRealMethod().when(b).buildAndSend(any(), any()));
         context.initMeters();
 
@@ -91,7 +92,8 @@ public class MeterBuilderTest extends MeterBaseTest {
     private void verifyDataTable(DataTable table, Object... data) {
         Assert.assertEquals(data.length / 2, table.size());
         for (int i = 0; i < data.length; i += 2) {
-            Assert.assertEquals(Long.parseLong(String.valueOf(data[i + 1])), table.get(String.valueOf(data[i])).longValue());
+            Assert.assertEquals(
+                Long.parseLong(String.valueOf(data[i + 1])), table.get(String.valueOf(data[i])).longValue());
         }
     }
 }
diff --git a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessContextTest.java b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessContextTest.java
index a53eb33..3f65b14 100644
--- a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessContextTest.java
+++ b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessContextTest.java
@@ -25,16 +25,16 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class MeterProcessContextTest extends MeterBaseTest {
     private static final String CONFIG_PATH = "meter-receive-config";
 
diff --git a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessorTest.java b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessorTest.java
index 6a042ae..b8de2e5 100644
--- a/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessorTest.java
+++ b/oap-server/analyzer/agent-analyzer/src/test/java/org/apache/skywalking/oap/server/analyzer/provider/meter/process/MeterProcessorTest.java
@@ -18,18 +18,17 @@
 
 package org.apache.skywalking.oap.server.analyzer.provider.meter.process;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.modules.junit4.PowerMockRunner;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doNothing;
@@ -38,7 +37,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class MeterProcessorTest extends MeterBaseTest {
 
     @Test
@@ -49,15 +48,18 @@ public class MeterProcessorTest extends MeterBaseTest {
         Assert.assertEquals(timestamp, processor.timestamp().longValue());
 
         // meters check
-        final Map<String, EvalMultipleData> meters = (Map<String, EvalMultipleData>) Whitebox.getInternalState(processor, "meters");
+        final Map<String, EvalMultipleData> meters = (Map<String, EvalMultipleData>) Whitebox.getInternalState(
+            processor, "meters");
         Assert.assertEquals(2, meters.size());
 
         // single value
-        EvalSingleData singleData = verifyBaseData(meters.get("test_count1"), "test_count1", Collections.singletonMap("k1", "v1"));
+        EvalSingleData singleData = verifyBaseData(
+            meters.get("test_count1"), "test_count1", Collections.singletonMap("k1", "v1"));
         Assert.assertEquals(1, singleData.getValue(), 0.0);
 
         // histogram
-        EvalHistogramData histogramData = verifyBaseData(meters.get("test_histogram"), "test_histogram", Collections.singletonMap("k2", "v2"));
+        EvalHistogramData histogramData = verifyBaseData(
+            meters.get("test_histogram"), "test_histogram", Collections.singletonMap("k2", "v2"));
         Assert.assertEquals(3, histogramData.getBuckets().size());
         Assert.assertEquals(10, histogramData.getBuckets().get(1d).longValue());
         Assert.assertEquals(15, histogramData.getBuckets().get(5d).longValue());
@@ -68,8 +70,11 @@ public class MeterProcessorTest extends MeterBaseTest {
     public void testProcess() {
         // each builder has build and send
         MeterProcessService context = (MeterProcessService) Whitebox.getInternalState(processor, "processService");
-        List<MeterBuilder> builders = context.enabledBuilders().stream().map(Mockito::spy)
-            .peek(builder -> doNothing().when(builder).buildAndSend(any(), any())).collect(Collectors.toList());
+        List<MeterBuilder> builders = context.enabledBuilders()
+                                             .stream()
+                                             .map(Mockito::spy)
+                                             .peek(builder -> doNothing().when(builder).buildAndSend(any(), any()))
+                                             .collect(Collectors.toList());
         Whitebox.setInternalState(context, "meterBuilders", builders);
         processor.process();
         builders.stream().forEach(b -> verify(b, times(1)).buildAndSend(any(), any()));
diff --git a/oap-server/pom.xml b/oap-server/pom.xml
index 3fc4ad8..e07643e 100755
--- a/oap-server/pom.xml
+++ b/oap-server/pom.xml
@@ -52,11 +52,12 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <protobuf-java.version>3.13.0</protobuf-java.version>
+        <protobuf-java-util.version>3.12.4</protobuf-java-util.version>
         <slf4j.version>1.7.25</slf4j.version>
         <log4j.version>2.9.0</log4j.version>
         <guava.version>28.1-jre</guava.version>
         <snakeyaml.version>1.18</snakeyaml.version>
-        <gson.version>2.8.6</gson.version>
         <graphql-java-tools.version>5.2.3</graphql-java-tools.version>
         <graphql-java.version>8.0</graphql-java.version>
         <zookeeper.version>3.4.10</zookeeper.version>
@@ -95,7 +96,6 @@
         <groovy.version>3.0.3</groovy.version>
 
         <zookeeper.image.version>3.5</zookeeper.image.version>
-        <protobuf-java-util.version>3.11.4</protobuf-java-util.version>
         <kafka-clients.version>2.4.1</kafka-clients.version>
         <spring-kafka-test.version>2.4.6.RELEASE</spring-kafka-test.version>
     </properties>
@@ -127,6 +127,13 @@
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy</artifactId>
+            <version>${bytebuddy.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>
@@ -273,6 +280,11 @@
 
             <dependency>
                 <groupId>com.google.protobuf</groupId>
+                <artifactId>protobuf-java</artifactId>
+                <version>${protobuf-java.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.protobuf</groupId>
                 <artifactId>protobuf-java-util</artifactId>
                 <version>${protobuf-java-util.version}</version>
             </dependency>
diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
index 61c9669..d3cd9d6 100644
--- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
+++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
@@ -59,7 +59,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 @PrepareForTest(DefaultScopeDefine.class)
 public class NotifyHandlerTest {
 
diff --git a/oap-server/server-cluster-plugin/cluster-consul-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/consul/ClusterModuleConsulProviderTest.java b/oap-server/server-cluster-plugin/cluster-consul-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/consul/ClusterModuleConsulProviderTest.java
index 09302fa..1b9da57 100644
--- a/oap-server/server-cluster-plugin/cluster-consul-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/consul/ClusterModuleConsulProviderTest.java
+++ b/oap-server/server-cluster-plugin/cluster-consul-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/consul/ClusterModuleConsulProviderTest.java
@@ -48,7 +48,7 @@ import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest(Consul.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class ClusterModuleConsulProviderTest {
 
     private ClusterModuleConsulProvider provider = new ClusterModuleConsulProvider();
diff --git a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/ClusterModuleEtcdProviderTest.java b/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/ClusterModuleEtcdProviderTest.java
deleted file mode 100644
index 8415a77..0000000
--- a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/ClusterModuleEtcdProviderTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.cluster.plugin.etcd;
-
-import java.net.URI;
-import java.util.List;
-import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.cluster.ClusterModule;
-import org.apache.skywalking.oap.server.library.module.ModuleConfig;
-import org.apache.skywalking.oap.server.library.module.ModuleStartException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.reflect.Whitebox;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(EtcdUtils.class)
-@PowerMockIgnore("javax.management.*")
-public class ClusterModuleEtcdProviderTest {
-
-    private ClusterModuleEtcdProvider provider = new ClusterModuleEtcdProvider();
-
-    @Test
-    public void name() {
-        assertEquals("etcd", provider.name());
-    }
-
-    @Test
-    public void module() {
-        assertEquals(ClusterModule.class, provider.module());
-    }
-
-    @Test
-    public void createConfigBeanIfAbsent() {
-        ModuleConfig moduleConfig = provider.createConfigBeanIfAbsent();
-        assertTrue(moduleConfig instanceof ClusterModuleEtcdConfig);
-    }
-
-    @Test(expected = ModuleStartException.class)
-    public void prepareWithNonHost() throws Exception {
-        provider.prepare();
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void prepare() throws Exception {
-        PowerMockito.mockStatic(EtcdUtils.class);
-        ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
-        etcdConfig.setHostPort("10.0.0.1:1000,10.0.0.2:1001");
-        Whitebox.setInternalState(provider, "config", etcdConfig);
-        provider.prepare();
-
-        List<URI> uris = mock(List.class);
-        PowerMockito.when(EtcdUtils.parse(etcdConfig)).thenReturn(uris);
-        ArgumentCaptor<ClusterModuleEtcdConfig> addressCaptor = ArgumentCaptor.forClass(ClusterModuleEtcdConfig.class);
-        PowerMockito.verifyStatic();
-        EtcdUtils.parse(addressCaptor.capture());
-        ClusterModuleEtcdConfig cfg = addressCaptor.getValue();
-        assertEquals(etcdConfig.getHostPort(), cfg.getHostPort());
-    }
-
-    @Test
-    public void prepareSingle() throws Exception {
-        PowerMockito.mockStatic(EtcdUtils.class);
-        ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
-        etcdConfig.setHostPort("10.0.0.1:1000");
-        Whitebox.setInternalState(provider, "config", etcdConfig);
-        provider.prepare();
-
-        List<URI> uris = mock(List.class);
-        PowerMockito.when(EtcdUtils.parse(etcdConfig)).thenReturn(uris);
-        ArgumentCaptor<ClusterModuleEtcdConfig> addressCaptor = ArgumentCaptor.forClass(ClusterModuleEtcdConfig.class);
-        PowerMockito.verifyStatic();
-        EtcdUtils.parse(addressCaptor.capture());
-        ClusterModuleEtcdConfig cfg = addressCaptor.getValue();
-        assertEquals(etcdConfig.getHostPort(), cfg.getHostPort());
-    }
-
-    @Test
-    public void start() {
-        provider.start();
-    }
-
-    @Test
-    public void notifyAfterCompleted() {
-        provider.notifyAfterCompleted();
-    }
-
-    @Test
-    public void requiredModules() {
-        String[] modules = provider.requiredModules();
-        assertArrayEquals(new String[] {CoreModule.NAME}, modules);
-    }
-}
diff --git a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinatorTest.java b/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinatorTest.java
deleted file mode 100644
index dd5c157..0000000
--- a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinatorTest.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.cluster.plugin.etcd;
-
-import com.google.gson.Gson;
-import java.util.ArrayList;
-import java.util.List;
-import mousio.etcd4j.EtcdClient;
-import mousio.etcd4j.promises.EtcdResponsePromise;
-import mousio.etcd4j.requests.EtcdKeyGetRequest;
-import mousio.etcd4j.requests.EtcdKeyPutRequest;
-import mousio.etcd4j.responses.EtcdKeysResponse;
-import org.apache.skywalking.oap.server.core.cluster.RemoteInstance;
-import org.apache.skywalking.oap.server.core.remote.client.Address;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(EtcdKeysResponse.class)
-@PowerMockIgnore("javax.management.*")
-public class EtcdCoordinatorTest {
-
-    private ClusterModuleEtcdConfig etcdConfig = new ClusterModuleEtcdConfig();
-
-    private EtcdClient client;
-
-    private EtcdCoordinator coordinator;
-
-    private Gson gson = new Gson();
-
-    private Address remoteAddress = new Address("10.0.0.1", 1000, false);
-    private Address selfRemoteAddress = new Address("10.0.0.2", 1001, true);
-
-    private Address internalAddress = new Address("10.0.0.3", 1002, false);
-
-    private static final String SERVICE_NAME = "my-service";
-
-    private EtcdResponsePromise<EtcdKeysResponse> getPromise;
-    private EtcdResponsePromise<EtcdKeysResponse> putPromise;
-
-    private EtcdKeysResponse response;
-
-    private EtcdKeyPutRequest putRequest = mock(EtcdKeyPutRequest.class);
-
-    private EtcdKeyGetRequest getRequest = mock(EtcdKeyGetRequest.class);
-
-    private EtcdKeyPutRequest putDirRequest = mock(EtcdKeyPutRequest.class);
-
-    private EtcdResponsePromise<EtcdKeysResponse> putDirPromise;
-
-    @Mock
-    private List<EtcdKeysResponse.EtcdNode> list = mock(List.class);
-
-    @Before
-    public void setUp() throws Exception {
-        etcdConfig.setServiceName(SERVICE_NAME);
-
-        client = mock(EtcdClient.class);
-        PowerMockito.whenNew(EtcdClient.class).withAnyArguments().thenReturn(client);
-        client = new EtcdClient("http://10.0.0.1:1000", "http://10.0.0.2:2000");
-        coordinator = new EtcdCoordinator(etcdConfig, client);
-
-        putPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
-        getPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
-        putDirPromise = (EtcdResponsePromise<EtcdKeysResponse>) mock(EtcdResponsePromise.class);
-
-        PowerMockito.when(client.putDir(anyString())).thenReturn(putDirRequest);
-        PowerMockito.when(putDirRequest.ttl(anyInt())).thenReturn(putDirRequest);
-        PowerMockito.when(putDirRequest.send()).thenReturn(putDirPromise);
-        PowerMockito.when(client.put(anyString(), anyString())).thenReturn(putRequest);
-        PowerMockito.when(putRequest.ttl(anyInt())).thenReturn(putRequest);
-        PowerMockito.when(putRequest.send()).thenReturn(putPromise);
-        PowerMockito.when(client.get(anyString())).thenReturn(getRequest);
-        PowerMockito.when(getRequest.send()).thenReturn(getPromise);
-
-        response = PowerMockito.mock(EtcdKeysResponse.class);
-
-        response = PowerMockito.mock(EtcdKeysResponse.class);
-        when(putPromise.get()).thenReturn(response);
-        when(getPromise.get()).thenReturn(response);
-        when(putDirPromise.get()).thenReturn(response);
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void queryRemoteNodesWithNonOrEmpty() {
-        EtcdKeysResponse.EtcdNode node = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
-        when(response.getNode()).thenReturn(node);
-        when(node.getValue()).thenReturn("{}");
-        assertEquals(0, coordinator.queryRemoteNodes().size());
-        assertEquals(0, coordinator.queryRemoteNodes().size());
-    }
-
-    @Test
-    public void queryRemoteNodes() {
-        registerSelfRemote();
-
-        EtcdKeysResponse.EtcdNode node = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
-        EtcdKeysResponse.EtcdNode node1 = PowerMockito.mock(EtcdKeysResponse.EtcdNode.class);
-
-        when(response.getNode()).thenReturn(node);
-        list = new ArrayList<>();
-        List list1 = Mockito.spy(list);
-        list1.add(node1);
-        when(node.getNodes()).thenReturn(list1);
-        when(node1.getValue()).thenReturn("{\"serviceId\":\"my-service\",\"host\":\"10.0.0.2\",\"port\":1001}");
-        List<RemoteInstance> remoteInstances = coordinator.queryRemoteNodes();
-        assertEquals(1, remoteInstances.size());
-
-        RemoteInstance selfInstance = remoteInstances.get(0);
-        velidate(selfRemoteAddress, selfInstance);
-    }
-
-    @Test
-    public void registerRemote() {
-        registerRemote(remoteAddress);
-    }
-
-    @Test
-    public void registerSelfRemote() {
-        registerRemote(selfRemoteAddress);
-    }
-
-    @Test
-    public void registerRemoteUsingInternal() {
-        etcdConfig.setInternalComHost(internalAddress.getHost());
-        etcdConfig.setInternalComPort(internalAddress.getPort());
-        registerRemote(internalAddress);
-    }
-
-    private void velidate(Address originArress, RemoteInstance instance) {
-        Address instanceAddress = instance.getAddress();
-        assertEquals(originArress.getHost(), instanceAddress.getHost());
-        assertEquals(originArress.getPort(), instanceAddress.getPort());
-    }
-
-    private void registerRemote(Address address) {
-        coordinator.registerRemote(new RemoteInstance(address));
-        EtcdEndpoint endpoint = afterRegister().get(0);
-        verifyRegistration(address, endpoint);
-    }
-
-    private List<EtcdEndpoint> afterRegister() {
-        ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
-        ArgumentCaptor<String> nameCaptor = ArgumentCaptor.forClass(String.class);
-        verify(client).put(nameCaptor.capture(), argumentCaptor.capture());
-        EtcdEndpoint endpoint = gson.fromJson(argumentCaptor.getValue(), EtcdEndpoint.class);
-        List<EtcdEndpoint> list = new ArrayList<>();
-        list.add(endpoint);
-        return list;
-    }
-
-    private void verifyRegistration(Address remoteAddress, EtcdEndpoint endpoint) {
-        assertNotNull(endpoint);
-        assertEquals(SERVICE_NAME, endpoint.getServiceName());
-        assertEquals(remoteAddress.getHost(), endpoint.getHost());
-        assertEquals(remoteAddress.getPort(), endpoint.getPort());
-    }
-
-}
diff --git a/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/ClusterModuleKubernetesProviderTest.java b/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/ClusterModuleKubernetesProviderTest.java
index 79f1029..ef9864d 100644
--- a/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/ClusterModuleKubernetesProviderTest.java
+++ b/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/ClusterModuleKubernetesProviderTest.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class ClusterModuleKubernetesProviderTest {
 
     private ClusterModuleKubernetesProvider provider = new ClusterModuleKubernetesProvider();
diff --git a/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/KubernetesCoordinatorTest.java b/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/KubernetesCoordinatorTest.java
index 48a8319..b6587db 100644
--- a/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/KubernetesCoordinatorTest.java
+++ b/oap-server/server-cluster-plugin/cluster-kubernetes-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/kubernetes/KubernetesCoordinatorTest.java
@@ -46,7 +46,7 @@ import org.powermock.reflect.Whitebox;
 import static org.powermock.api.mockito.PowerMockito.when;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 @PrepareForTest({NamespacedPodListInformer.class})
 public class KubernetesCoordinatorTest {
 
diff --git a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java
deleted file mode 100644
index f489f93..0000000
--- a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.cluster.plugin.nacos;
-
-import com.alibaba.nacos.api.PropertyKeyConst;
-import com.alibaba.nacos.api.naming.NamingFactory;
-import com.alibaba.nacos.api.naming.NamingService;
-import java.util.Properties;
-import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.cluster.ClusterModule;
-import org.apache.skywalking.oap.server.library.module.ModuleConfig;
-import org.apache.skywalking.oap.server.library.module.ModuleStartException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.reflect.Whitebox;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(NamingFactory.class)
-@PowerMockIgnore("javax.management.*")
-public class ClusterModuleNacosProviderTest {
-
-    private static final String SERVICE_NAME = "test-service_name";
-
-    private ClusterModuleNacosProvider provider = new ClusterModuleNacosProvider();
-
-    @Test
-    public void name() {
-        assertEquals("nacos", provider.name());
-    }
-
-    @Test
-    public void module() {
-        assertEquals(ClusterModule.class, provider.module());
-    }
-
-    @Test
-    public void createConfigBeanIfAbsent() {
-        ModuleConfig moduleConfig = provider.createConfigBeanIfAbsent();
-        assertTrue(moduleConfig instanceof ClusterModuleNacosConfig);
-    }
-
-    @Test(expected = ModuleStartException.class)
-    public void prepareWithNonHost() throws Exception {
-        provider.prepare();
-    }
-
-    @Test
-    public void prepare() throws Exception {
-        PowerMockito.mockStatic(NamingFactory.class);
-        ClusterModuleNacosConfig nacosConfig = new ClusterModuleNacosConfig();
-        nacosConfig.setHostPort("10.0.0.1:1000,10.0.0.2:1001");
-        nacosConfig.setServiceName(SERVICE_NAME);
-        Whitebox.setInternalState(provider, "config", nacosConfig);
-        NamingService namingService = mock(NamingService.class);
-
-        Properties properties = new Properties();
-        properties.put(PropertyKeyConst.SERVER_ADDR, "10.0.0.1:1000,10.0.0.2:1001");
-
-        PowerMockito.when(NamingFactory.createNamingService(properties)).thenReturn(namingService);
-        provider.prepare();
-        ArgumentCaptor<Properties> addressCaptor = ArgumentCaptor.forClass(Properties.class);
-        PowerMockito.verifyStatic();
-        NamingFactory.createNamingService(addressCaptor.capture());
-        Properties data = addressCaptor.getValue();
-        assertEquals("10.0.0.1:1000,10.0.0.2:1001", data.getProperty(PropertyKeyConst.SERVER_ADDR));
-    }
-
-    @Test
-    public void start() {
-        provider.start();
-    }
-
-    @Test
-    public void notifyAfterCompleted() {
-        provider.notifyAfterCompleted();
-    }
-
-    @Test
-    public void requiredModules() {
-        String[] modules = provider.requiredModules();
-        assertArrayEquals(new String[] {CoreModule.NAME}, modules);
-    }
-}
diff --git a/oap-server/server-configuration/configuration-consul/src/test/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegisterTest.java b/oap-server/server-configuration/configuration-consul/src/test/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegisterTest.java
index 1cfec1e..34e6fc3 100644
--- a/oap-server/server-configuration/configuration-consul/src/test/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegisterTest.java
+++ b/oap-server/server-configuration/configuration-consul/src/test/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegisterTest.java
@@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.configuration.consul;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Sets;
 import com.google.common.io.BaseEncoding;
-import com.orbitz.consul.KeyValueClient;
 import com.orbitz.consul.cache.ConsulCache;
 import com.orbitz.consul.cache.KVCache;
 import com.orbitz.consul.model.kv.ImmutableValue;
@@ -35,6 +34,7 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.powermock.reflect.Whitebox;
@@ -48,6 +48,13 @@ import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest(KVCache.class)
+@PowerMockIgnore({
+    "com.sun.org.apache.xerces.*",
+    "javax.xml.*",
+    "org.xml.*",
+    "javax.management.*",
+    "org.w3c.*"
+})
 @SuppressWarnings({
     "unchecked",
     "OptionalGetWithoutIsPresent"
@@ -77,8 +84,8 @@ public class ConsulConfigurationWatcherRegisterTest {
         ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class);
 
         PowerMockito.mockStatic(KVCache.class);
-        PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key1"))).thenReturn(cache1);
-        PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key2"))).thenReturn(cache2);
+        PowerMockito.when(KVCache.newCache(any(), eq("key1"))).thenReturn(cache1);
+        PowerMockito.when(KVCache.newCache(any(), eq("key2"))).thenReturn(cache2);
 
         when(register.readConfig(any(Set.class))).thenCallRealMethod();
 
@@ -128,8 +135,8 @@ public class ConsulConfigurationWatcherRegisterTest {
         ArgumentCaptor<ConsulCache.Listener> listener2 = ArgumentCaptor.forClass(ConsulCache.Listener.class);
 
         PowerMockito.mockStatic(KVCache.class);
-        PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key1"))).thenReturn(cache1);
-        PowerMockito.when(KVCache.newCache(any(KeyValueClient.class), eq("key2"))).thenReturn(cache2);
+        PowerMockito.when(KVCache.newCache(any(), eq("key1"))).thenReturn(cache1);
+        PowerMockito.when(KVCache.newCache(any(), eq("key2"))).thenReturn(cache2);
 
         when(register.readConfig(any(Set.class))).thenCallRealMethod();
 
diff --git a/oap-server/server-configuration/configuration-etcd/pom.xml b/oap-server/server-configuration/configuration-etcd/pom.xml
index 8d1da37..baf0f07 100644
--- a/oap-server/server-configuration/configuration-etcd/pom.xml
+++ b/oap-server/server-configuration/configuration-etcd/pom.xml
@@ -69,6 +69,19 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${compiler.version}</source>
+                    <target>${compiler.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
     <profiles>
         <profile>
             <id>CI-with-IT</id>
diff --git a/oap-server/server-configuration/configuration-etcd/src/test/java/org/apache/skywalking/oap/server/configuration/etcd/EtcdConfigWatcherRegisterTest.java b/oap-server/server-configuration/configuration-etcd/src/test/java/org/apache/skywalking/oap/server/configuration/etcd/EtcdConfigWatcherRegisterTest.java
deleted file mode 100644
index 4f1f476..0000000
--- a/oap-server/server-configuration/configuration-etcd/src/test/java/org/apache/skywalking/oap/server/configuration/etcd/EtcdConfigWatcherRegisterTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.configuration.etcd;
-
-import com.google.common.collect.Sets;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import mousio.client.promises.ResponsePromise;
-import mousio.etcd4j.EtcdClient;
-import mousio.etcd4j.promises.EtcdResponsePromise;
-import mousio.etcd4j.requests.EtcdKeyGetRequest;
-import mousio.etcd4j.responses.EtcdKeysResponse;
-import org.apache.skywalking.oap.server.configuration.api.ConfigTable;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.reflect.Whitebox;
-
-import static junit.framework.TestCase.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.spy;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({
-    EtcdKeysResponse.class,
-    EtcdUtils.class,
-    EtcdClient.class,
-    URI.class
-})
-@PowerMockIgnore({"javax.management.*"})
-public class EtcdConfigWatcherRegisterTest {
-
-    @Before
-    @Test
-    public void shouldReadConfigs() throws Exception {
-        final String group = "skywalking";
-        final String testKey1 = "receiver-trace.default.slowDBAccessThreshold";
-        final String testVal1 = "test";
-        final String testKey2 = "testKey";
-        final String testVal2 = "testVal";
-
-        final EtcdServerSettings mockSettings = mock(EtcdServerSettings.class);
-        when(mockSettings.getGroup()).thenReturn(group);
-        mockStatic(EtcdUtils.class);
-
-        List<URI> uris = mock(List.class);
-        when(EtcdUtils.parse(any())).thenReturn(uris);
-
-        final EtcdClient client = PowerMockito.mock(EtcdClient.class);
-        whenNew(EtcdClient.class).withAnyArguments().thenReturn(client);
-
-        String port = System.getProperty("etcd.port");
-        URI uri = new URI("http://localhost:" + port);
-        List<URI> urisArray = spy(ArrayList.class);
-        urisArray.add(uri);
-        URI[] array = urisArray.toArray(new URI[] {});
-        when(uris.toArray(new URI[] {})).thenReturn(array);
-
-        final EtcdConfigWatcherRegister mockRegister = spy(new EtcdConfigWatcherRegister(mockSettings));
-
-        Whitebox.setInternalState(mockRegister, "client", client);
-        Whitebox.setInternalState(mockRegister, "settings", mockSettings);
-
-        final EtcdKeysResponse response = PowerMockito.mock(EtcdKeysResponse.class);
-        final EtcdKeysResponse response1 = PowerMockito.mock(EtcdKeysResponse.class);
-
-        final EtcdKeyGetRequest request = PowerMockito.mock(EtcdKeyGetRequest.class);
-
-        when(client.get("/skywalking/receiver-trace.default.slowDBAccessThreshold")).thenReturn(request);
-        when(request.waitForChange()).thenReturn(request);
-
-        final EtcdResponsePromise<EtcdKeysResponse> promise = mock(EtcdResponsePromise.class);
-        final ResponsePromise<EtcdKeysResponse> responseResponsePromise = mock(ResponsePromise.class);
-        when(request.send()).thenReturn(promise);
-        when(promise.get()).thenReturn(response);
-        when(responseResponsePromise.get()).thenReturn(response);
-
-        final EtcdKeysResponse.EtcdNode node = mock(EtcdKeysResponse.EtcdNode.class);
-        when(response.getNode()).thenReturn(node);
-        when(node.getKey()).thenReturn("/skywalking/receiver-trace.default.slowDBAccessThreshold");
-        when(node.getValue()).thenReturn("test");
-
-        final EtcdKeyGetRequest request1 = mock(EtcdKeyGetRequest.class);
-        when(client.get("/skywalking/testKey")).thenReturn(request1);
-        when(request1.waitForChange()).thenReturn(request1);
-        final EtcdResponsePromise<EtcdKeysResponse> promise1 = mock(EtcdResponsePromise.class);
-        final ResponsePromise<EtcdKeysResponse> responseResponsePromise1 = mock(ResponsePromise.class);
-        when(request1.send()).thenReturn(promise1);
-        when(promise1.get()).thenReturn(response1);
-        when(responseResponsePromise1.get()).thenReturn(response1);
-
-        final EtcdKeysResponse.EtcdNode node1 = mock(EtcdKeysResponse.EtcdNode.class);
-        when(response1.getNode()).thenReturn(node1);
-        when(node1.getKey()).thenReturn("/skywalking/testKey");
-        when(node1.getValue()).thenReturn("testVal");
-
-        final ConfigTable configTable = mockRegister.readConfig(Sets.newHashSet(testKey1, testKey2)).get();
-
-        assertEquals(2, configTable.getItems().size());
-        Map<String, String> kvs = new HashMap<>();
-        for (ConfigTable.ConfigItem item : configTable.getItems()) {
-            kvs.put(item.getName(), item.getValue());
-        }
-        assertEquals(testVal1, kvs.get(testKey1));
-        assertEquals(testVal2, kvs.get(testKey2));
-    }
-}
diff --git a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
index 2fd449c..45ddf43 100644
--- a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
+++ b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigWatcherRegisterTest.java
@@ -39,7 +39,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
 import org.yaml.snakeyaml.Yaml;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 @PrepareForTest({ConfigurationConfigmapInformer.class})
 public class ConfigmapConfigWatcherRegisterTest {
 
diff --git a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationProviderTest.java b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationProviderTest.java
index 13d967e..4090296 100644
--- a/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationProviderTest.java
+++ b/oap-server/server-configuration/configuration-k8s-configmap/src/test/java/org/apache/skywalking/oap/server/configuration/configmap/ConfigmapConfigurationProviderTest.java
@@ -28,7 +28,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*")
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class ConfigmapConfigurationProviderTest {
 
     private final ConfigmapConfigurationProvider provider = new ConfigmapConfigurationProvider();
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/TimeBucketTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/TimeBucketTest.java
index 201d436..f6cff89 100644
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/TimeBucketTest.java
+++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/TimeBucketTest.java
@@ -56,8 +56,8 @@ public class TimeBucketTest {
                 DownSampling.Day,
                 DAYS,
                 MILLISECONDS.toDays(NOW)
-            },
-            };
+            }
+        };
     }
 
     private DownSampling downSampling;
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/model/StorageModelsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/model/StorageModelsTest.java
index 23f4431..5267e8f 100644
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/model/StorageModelsTest.java
+++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/model/StorageModelsTest.java
@@ -35,11 +35,13 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest({DefaultScopeDefine.class})
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class StorageModelsTest {
     @BeforeClass
     public static void setup() {
diff --git a/oap-server/server-library/library-util/pom.xml b/oap-server/server-library/library-util/pom.xml
index 1e468a1..241b7eb 100644
--- a/oap-server/server-library/library-util/pom.xml
+++ b/oap-server/server-library/library-util/pom.xml
@@ -17,7 +17,8 @@
   ~
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>server-library</artifactId>
         <groupId>org.apache.skywalking</groupId>
@@ -30,7 +31,6 @@
 
     <properties>
         <ststem-rules.version>1.18.0</ststem-rules.version>
-        <protobuf-java.version>3.11.4</protobuf-java.version>
     </properties>
 
     <dependencies>
@@ -57,7 +57,6 @@
         <dependency>
             <groupId>com.google.protobuf</groupId>
             <artifactId>protobuf-java</artifactId>
-            <version>${protobuf-java.version}</version>
         </dependency>
 
         <dependency>
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/pom.xml
index c0bd932..e9b0251 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/pom.xml
+++ b/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/pom.xml
@@ -46,10 +46,14 @@
         <dependency>
             <groupId>com.google.protobuf</groupId>
             <artifactId>protobuf-java-util</artifactId>
-            <version>3.5.1</version>
+            <version>${protobuf-java-util.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency> <!-- necessary for Java 9+ -->
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>annotations-api</artifactId>
+            <version>${org.apache.tomcat.annotations-api.version}</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
-
-
 </project>
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserReportServletHandlerTest.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserReportServletHandlerTest.java
index b3dd333..69bd2d4 100644
--- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserReportServletHandlerTest.java
+++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/rest/BrowserReportServletHandlerTest.java
@@ -36,14 +36,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore({"javax.management.*"})
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class BrowserReportServletHandlerTest {
     @Mock
     private HttpServletRequest request;
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/rest/TraceSegmentReportServletHandlerTest.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/rest/TraceSegmentReportServletHandlerTest.java
index b47efc2..9a88454 100644
--- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/rest/TraceSegmentReportServletHandlerTest.java
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/rest/TraceSegmentReportServletHandlerTest.java
@@ -40,14 +40,14 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
 
 import static org.mockito.Mockito.when;
 
 @RunWith(PowerMockRunner.class)
-@PowerMockIgnore({"javax.management.*"})
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.*"})
 public class TraceSegmentReportServletHandlerTest {
 
     @Mock
@@ -71,7 +71,7 @@ public class TraceSegmentReportServletHandlerTest {
         Mockito.when(moduleManager.find(AnalyzerModule.NAME)).thenReturn(analyzerModule);
 
         Mockito.when(telemetryProvider.getService(MetricsCreator.class))
-            .thenReturn(new MetricsCreatorNoop());
+               .thenReturn(new MetricsCreatorNoop());
 
         when(analyzerModuleProvider.getService(ISegmentParserService.class))
             .thenReturn(new SegmentParserServiceImpl(moduleManager, new AnalyzerModuleConfig()));
diff --git a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileSnapshotExporterTest.java b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileSnapshotExporterTest.java
index 189c2aa..64a42c2 100644
--- a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileSnapshotExporterTest.java
+++ b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileSnapshotExporterTest.java
@@ -46,8 +46,8 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.internal.util.reflection.Whitebox;
 import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
 import org.yaml.snakeyaml.Yaml;
 
 @RunWith(PowerMockRunner.class)
diff --git a/pom.xml b/pom.xml
index 69926e1..9858606 100755
--- a/pom.xml
+++ b/pom.xml
@@ -182,19 +182,25 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <compiler.version>1.8</compiler.version>
-        <powermock.version>1.6.4</powermock.version>
+        <powermock.version>2.0.7</powermock.version>
         <checkstyle.version>6.18</checkstyle.version>
         <junit.version>4.12</junit.version>
-        <mockito-all.version>1.10.19</mockito-all.version>
+        <mockito-core.version>3.5.13</mockito-core.version>
         <lombok.version>1.18.10</lombok.version>
 
         <!-- core lib dependency -->
-        <grpc.version>1.26.0</grpc.version>
+        <bytebuddy.version>1.10.16</bytebuddy.version>
+        <grpc.version>1.32.1</grpc.version>
+        <gson.version>2.8.6</gson.version>
         <os-maven-plugin.version>1.6.2</os-maven-plugin.version>
         <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
-        <com.google.protobuf.protoc.version>3.3.0</com.google.protobuf.protoc.version>
-        <protoc-gen-grpc-java.plugin.version>1.8.0</protoc-gen-grpc-java.plugin.version>
+        <com.google.protobuf.protoc.version>3.12.0</com.google.protobuf.protoc.version>
+        <protoc-gen-grpc-java.plugin.version>1.32.1</protoc-gen-grpc-java.plugin.version>
         <netty-tcnative-boringssl-static.version>2.0.26.Final</netty-tcnative-boringssl-static.version>
+        <javax.annotation-api.version>1.3.2</javax.annotation-api.version>
+        <objenesis.version>3.1</objenesis.version>
+        <!-- necessary for Java 9+ -->
+        <org.apache.tomcat.annotations-api.version>6.0.53</org.apache.tomcat.annotations-api.version>
 
         <!-- Plugin versions -->
         <docker.plugin.version>0.4.13</docker.plugin.version>
@@ -219,7 +225,6 @@
         <gmaven-plugin.version>1.5</gmaven-plugin.version>
         <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
         <checkstyle.fails.on.error>true</checkstyle.fails.on.error>
-        <javax.annotation-api.version>1.3.2</javax.annotation-api.version>
     </properties>
 
     <dependencies>
@@ -229,18 +234,23 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
+            <artifactId>powermock-api-mockito2</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito</artifactId>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy-agent</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.objenesis</groupId>
+            <artifactId>objenesis</artifactId>
             <scope>test</scope>
         </dependency>
 
@@ -275,8 +285,8 @@
             </dependency>
             <dependency>
                 <groupId>org.mockito</groupId>
-                <artifactId>mockito-all</artifactId>
-                <version>${mockito-all.version}</version>
+                <artifactId>mockito-core</artifactId>
+                <version>${mockito-core.version}</version>
                 <scope>test</scope>
             </dependency>
             <dependency>
@@ -287,11 +297,23 @@
             </dependency>
             <dependency>
                 <groupId>org.powermock</groupId>
-                <artifactId>powermock-api-mockito</artifactId>
+                <artifactId>powermock-api-mockito2</artifactId>
                 <version>${powermock.version}</version>
                 <scope>test</scope>
             </dependency>
             <dependency>
+                <groupId>net.bytebuddy</groupId>
+                <artifactId>byte-buddy-agent</artifactId>
+                <version>${bytebuddy.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.objenesis</groupId>
+                <artifactId>objenesis</artifactId>
+                <version>${objenesis.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
                 <groupId>org.openjdk.jmh</groupId>
                 <artifactId>jmh-generator-annprocess</artifactId>
                 <version>${jmh.version}</version>
diff --git a/test/plugin/scenarios/gson-scenario/pom.xml b/test/plugin/scenarios/gson-scenario/pom.xml
index b49aef3..3beba29 100644
--- a/test/plugin/scenarios/gson-scenario/pom.xml
+++ b/test/plugin/scenarios/gson-scenario/pom.xml
@@ -29,7 +29,6 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <compiler.version>1.8</compiler.version>
         <spring-boot-version>2.1.6.RELEASE</spring-boot-version>
         <test.framework.version>2.8.5</test.framework.version>
         <docker.image.version>${test.framework.version}</docker.image.version>
diff --git a/test/plugin/scenarios/hystrix-scenario/pom.xml b/test/plugin/scenarios/hystrix-scenario/pom.xml
index 8aedab1..3cab1e4 100644
--- a/test/plugin/scenarios/hystrix-scenario/pom.xml
+++ b/test/plugin/scenarios/hystrix-scenario/pom.xml
@@ -29,8 +29,6 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <compiler.version>1.8</compiler.version>
-
         <test.framework.version>1.4.20</test.framework.version>
         <spring-boot-version>2.1.6.RELEASE</spring-boot-version>
     </properties>
diff --git a/tools/dependencies/known-oap-backend-dependencies-es7.txt b/tools/dependencies/known-oap-backend-dependencies-es7.txt
index bb38473..98640ae 100755
--- a/tools/dependencies/known-oap-backend-dependencies-es7.txt
+++ b/tools/dependencies/known-oap-backend-dependencies-es7.txt
@@ -44,13 +44,13 @@ freemarker-2.3.28.jar
 graphql-java-8.0.jar
 graphql-java-tools-5.2.3.jar
 groovy-3.0.3.jar
-grpc-api-1.26.0.jar
-grpc-context-1.26.0.jar
-grpc-core-1.26.0.jar
-grpc-netty-1.26.0.jar
-grpc-protobuf-1.26.0.jar
-grpc-protobuf-lite-1.26.0.jar
-grpc-stub-1.26.0.jar
+grpc-api-1.32.1.jar
+grpc-context-1.32.1.jar
+grpc-core-1.32.1.jar
+grpc-netty-1.32.1.jar
+grpc-protobuf-1.32.1.jar
+grpc-protobuf-lite-1.32.1.jar
+grpc-stub-1.32.1.jar
 gson-2.8.6.jar
 gson-fire-1.8.3.jar
 guava-28.1-jre.jar
@@ -131,24 +131,22 @@ netty-buffer-4.1.42.Final.jar
 netty-codec-4.1.42.Final.jar
 netty-codec-dns-4.1.42.Final.jar
 netty-codec-http-4.1.42.Final.jar
-netty-codec-http2-4.1.42.Final.jar
-netty-codec-socks-4.1.42.Final.jar
+netty-codec-http2-4.1.51.Final.jar
+netty-codec-socks-4.1.51.Final.jar
 netty-common-4.1.42.Final.jar
 netty-handler-4.1.42.Final.jar
-netty-handler-proxy-4.1.42.Final.jar
+netty-handler-proxy-4.1.51.Final.jar
 netty-resolver-4.1.42.Final.jar
 netty-resolver-dns-4.1.42.Final.jar
 netty-tcnative-boringssl-static-2.0.26.Final.jar
 netty-transport-4.1.42.Final.jar
 okhttp-3.9.0.jar
 okio-1.13.0.jar
-opencensus-api-0.24.0.jar
-opencensus-contrib-grpc-metrics-0.24.0.jar
 parent-join-client-7.0.0.jar
 perfmark-api-0.19.0.jar
-proto-google-common-protos-1.12.0.jar
-protobuf-java-3.11.4.jar
-protobuf-java-util-3.11.4.jar
+proto-google-common-protos-1.17.0.jar
+protobuf-java-3.13.0.jar
+protobuf-java-util-3.12.4.jar
 rank-eval-client-7.0.0.jar
 reactive-streams-1.0.2.jar
 reflectasm-1.11.7.jar
diff --git a/tools/dependencies/known-oap-backend-dependencies.txt b/tools/dependencies/known-oap-backend-dependencies.txt
index b4391a5..4dd8f35 100755
--- a/tools/dependencies/known-oap-backend-dependencies.txt
+++ b/tools/dependencies/known-oap-backend-dependencies.txt
@@ -45,13 +45,13 @@ freemarker-2.3.28.jar
 graphql-java-8.0.jar
 graphql-java-tools-5.2.3.jar
 groovy-3.0.3.jar
-grpc-api-1.26.0.jar
-grpc-context-1.26.0.jar
-grpc-core-1.26.0.jar
-grpc-netty-1.26.0.jar
-grpc-protobuf-1.26.0.jar
-grpc-protobuf-lite-1.26.0.jar
-grpc-stub-1.26.0.jar
+grpc-api-1.32.1.jar
+grpc-context-1.32.1.jar
+grpc-core-1.32.1.jar
+grpc-netty-1.32.1.jar
+grpc-protobuf-1.32.1.jar
+grpc-protobuf-lite-1.32.1.jar
+grpc-stub-1.32.1.jar
 gson-2.8.6.jar
 gson-fire-1.8.3.jar
 guava-28.1-jre.jar
@@ -129,24 +129,22 @@ netty-buffer-4.1.42.Final.jar
 netty-codec-4.1.42.Final.jar
 netty-codec-dns-4.1.42.Final.jar
 netty-codec-http-4.1.42.Final.jar
-netty-codec-http2-4.1.42.Final.jar
-netty-codec-socks-4.1.42.Final.jar
+netty-codec-http2-4.1.51.Final.jar
+netty-codec-socks-4.1.51.Final.jar
 netty-common-4.1.42.Final.jar
 netty-handler-4.1.42.Final.jar
-netty-handler-proxy-4.1.42.Final.jar
+netty-handler-proxy-4.1.51.Final.jar
 netty-resolver-4.1.42.Final.jar
 netty-resolver-dns-4.1.42.Final.jar
 netty-tcnative-boringssl-static-2.0.26.Final.jar
 netty-transport-4.1.42.Final.jar
 okhttp-3.9.0.jar
 okio-1.13.0.jar
-opencensus-api-0.24.0.jar
-opencensus-contrib-grpc-metrics-0.24.0.jar
 parent-join-client-6.3.2.jar
 perfmark-api-0.19.0.jar
-proto-google-common-protos-1.12.0.jar
-protobuf-java-3.11.4.jar
-protobuf-java-util-3.11.4.jar
+proto-google-common-protos-1.17.0.jar
+protobuf-java-3.13.0.jar
+protobuf-java-util-3.12.4.jar
 rank-eval-client-6.3.2.jar
 reactive-streams-1.0.2.jar
 reflectasm-1.11.7.jar