Skip to content

Commit

Permalink
move class to bootstrap and fix native image build
Browse files Browse the repository at this point in the history
  • Loading branch information
amarziali committed Jan 25, 2024
1 parent 678f896 commit 76ee2c7
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package datadog.trace.bootstrap;

import java.util.concurrent.atomic.AtomicLong;

public class InstrumentationErrors {
private static final AtomicLong COUNTER = new AtomicLong();

public static long getErrorCount() {
return COUNTER.get();
}

@SuppressWarnings("unused")
public static void incrementErrorCount() {
COUNTER.incrementAndGet();
}

// Visible for testing
public static void resetErrorCount() {
COUNTER.set(0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import datadog.trace.api.InstrumenterConfig;
import datadog.trace.bootstrap.ExceptionLogger;
import java.util.concurrent.atomic.AtomicLong;
import net.bytebuddy.ClassFileVersion;
import net.bytebuddy.asm.Advice.ExceptionHandler;
import net.bytebuddy.implementation.Implementation;
Expand All @@ -20,22 +19,6 @@ public class ExceptionHandlers {
// Bootstrap ExceptionHandler.class will always be resolvable, so we'll use it in the log name
private static final String HANDLER_NAME = ExceptionLogger.class.getName().replace('.', '/');

private static final AtomicLong COUNTER = new AtomicLong();

public static long getErrorCount() {
return COUNTER.get();
}

@SuppressWarnings("unused")
public static void incrementErrorCount() {
COUNTER.incrementAndGet();
}

// Visible for testing
public static void resetErrorCount() {
COUNTER.set(0);
}

private static final ExceptionHandler EXCEPTION_STACK_HANDLER =
new ExceptionHandler.Simple(
new StackManipulation() {
Expand Down Expand Up @@ -84,7 +67,7 @@ public Size apply(final MethodVisitor mv, final Implementation.Context context)
// invoke incrementAndGet on our exception counter
mv.visitMethodInsn(
Opcodes.INVOKESTATIC,
"datadog/trace/agent/tooling/bytebuddy/ExceptionHandlers",
"datadog/trace/bootstrap/InstrumentationErrors",
"incrementErrorCount",
"()V");
// stack: (top) throwable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import ch.qos.logback.core.read.ListAppender
import datadog.trace.agent.tooling.bytebuddy.ExceptionHandlers
import datadog.trace.api.Platform
import datadog.trace.bootstrap.ExceptionLogger
import datadog.trace.bootstrap.InstrumentationErrors
import datadog.trace.test.util.DDSpecification
import net.bytebuddy.agent.ByteBuddyAgent
import net.bytebuddy.agent.builder.AgentBuilder
Expand Down Expand Up @@ -116,7 +117,7 @@ abstract class BaseExceptionHandlerTest extends DDSpecification {
]
URLClassLoader loader = new URLClassLoader(classpath, (ClassLoader) null)
when:
loader.loadClass(ExceptionHandlers.getName())
loader.loadClass(InstrumentationErrors.getName())
then:
thrown ClassNotFoundException

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[
+ "datadog.trace.bootstrap.InstrumentationClassLoader:build_time,"
+ "datadog.trace.bootstrap.FieldBackedContextStores:build_time,"
+ "datadog.trace.bootstrap.benchmark.StaticEventLogger:build_time,"
+ "datadog.trace.bootstrap.InstrumentationErrors:build_time,"
+ "datadog.trace.bootstrap.instrumentation.java.concurrent.ConcurrentState:build_time,"
+ "datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter:build_time,"
+ "datadog.trace.bootstrap.instrumentation.java.concurrent.QueueTimeHelper:build_time,"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import datadog.trace.agent.test.timer.TestTimer
import datadog.trace.agent.tooling.AgentInstaller
import datadog.trace.agent.tooling.Instrumenter
import datadog.trace.agent.tooling.TracerInstaller
import datadog.trace.agent.tooling.bytebuddy.ExceptionHandlers
import datadog.trace.agent.tooling.bytebuddy.matcher.GlobalIgnores
import datadog.trace.api.*
import datadog.trace.api.config.GeneralConfig
Expand All @@ -25,6 +24,7 @@ import datadog.trace.api.sampling.SamplingRule
import datadog.trace.api.time.SystemTimeSource
import datadog.trace.bootstrap.ActiveSubsystems
import datadog.trace.bootstrap.CallDepthThreadLocalMap
import datadog.trace.bootstrap.InstrumentationErrors
import datadog.trace.bootstrap.instrumentation.api.AgentSpan
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI
import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring
Expand Down Expand Up @@ -444,7 +444,7 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L
if (forceAppSecActive) {
ActiveSubsystems.APPSEC_ACTIVE = true
}
ExceptionHandlers.resetErrorCount()
InstrumentationErrors.resetErrorCount()
}

@Override
Expand Down Expand Up @@ -481,7 +481,7 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L
spanFinishLocations.clear()
originalToSpySpan.clear()
}
assert ExceptionHandlers.errorCount == 0
assert InstrumentationErrors.errorCount == 0
}

private void doCheckRepeatedFinish() {
Expand Down

0 comments on commit 76ee2c7

Please sign in to comment.