diff --git a/CHANGES.md b/CHANGES.md index 5086b4a2f..313e7783b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,8 @@ Release Notes. #### Java Agent * Remove invalid mysql configuration in agent.config. +* Add net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy.Listener + to show detail message when redifine errors occur #### OAP-Backend diff --git a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java index b32708931..8fe933084 100644 --- a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java +++ b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java @@ -19,7 +19,9 @@ package org.apache.skywalking.apm.agent; import java.lang.instrument.Instrumentation; +import java.util.Collections; import java.util.List; +import java.util.Map; import net.bytebuddy.ByteBuddy; import net.bytebuddy.agent.builder.AgentBuilder; @@ -123,6 +125,7 @@ public class SkyWalkingAgent { agentBuilder.type(pluginFinder.buildMatch()) .transform(new Transformer(pluginFinder)) .with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION) + .with(new RedefinitionListener()) .with(new Listener()) .installOn(instrumentation); @@ -215,4 +218,23 @@ public class SkyWalkingAgent { public void onComplete(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { } } + + private static class RedefinitionListener implements AgentBuilder.RedefinitionStrategy.Listener { + + @Override + public void onBatch(int index, List> batch, List> types) { + /* do nothing */ + } + + @Override + public Iterable>> onError(int index, List> batch, Throwable throwable, List> types) { + LOGGER.error(throwable, "index={}, batch={}, types={}", index, batch, types); + return Collections.emptyList(); + } + + @Override + public void onComplete(int amount, List> types, Map>, Throwable> failures) { + /* do nothing */ + } + } }