Skip to content

Conversation

@mcculls
Copy link
Collaborator

@mcculls mcculls commented Jan 21, 2026

What Does This Do

  • Translates EMPTY_TRIE to empty builder, and persisted empty builder to EMPTY_TRIE
  • Moves EMPTY_TRIE constant from Builder to ClassNameTrie

Motivation

Avoids the following exception when an empty trie is persisted and restored:

ERROR> java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
ERROR> 	at datadog.instrument.utils.ClassNameTrie.apply(ClassNameTrie.java:172)
ERROR> 	at datadog.instrument.utils.ClassNameTrie.apply(ClassNameTrie.java:152)
ERROR> 	at datadog.instrument.utils.ClassNameTrie.apply(ClassNameTrie.java:129)
ERROR> 	at datadog.trace.agent.tooling.KnownTypesIndex.apply(KnownTypesIndex.java:41)
ERROR> 	at datadog.trace.agent.tooling.CombiningMatcher.matches(CombiningMatcher.java:78)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$RawMatcher$Conjunction.matches(AgentBuilder.java:1810)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.doTransform(AgentBuilder.java:12801)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:12759)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.access$1800(AgentBuilder.java:12468)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$Java9CapableVmDispatcher.run(AgentBuilder.java:13250)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$Java9CapableVmDispatcher.run(AgentBuilder.java:13180)
ERROR> 	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.doPrivileged(AgentBuilder.java)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:12702)
ERROR> 	at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$ByteBuddy$ModuleSupport.transform(Unknown Source)
ERROR> 	at datadog.trace.agent.tooling.bytebuddy.DDJava9ClassFileTransformer.transform(DDJava9ClassFileTransformer.java:60)
ERROR> 	at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
ERROR> 	at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:610)
ERROR> 	at java.base/java.lang.ClassLoader.findBootstrapClass(Native Method)
ERROR> 	at java.base/java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1277)
ERROR> 	at java.base/java.lang.System$2.findBootstrapClassOrNull(System.java:2397)
ERROR> 	at java.base/jdk.internal.loader.ClassLoaders$BootClassLoader.loadClassOrNull(ClassLoaders.java:140)
ERROR> 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:700)
ERROR> 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:669)
ERROR> 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
ERROR> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:580)
ERROR> 	at datadog.trace.bootstrap.DatadogClassLoader.loadClass(DatadogClassLoader.java:114)
ERROR> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
ERROR> 	at datadog.communication.ddagent.SharedCommunicationObjects.createRemaining(SharedCommunicationObjects.java:91)
ERROR> 	at datadog.trace.agent.core.CoreTracer.<init>(CoreTracer.java:767)
ERROR> 	at datadog.trace.agent.core.CoreTracer.<init>(CoreTracer.java:137)
ERROR> 	at datadog.trace.agent.core.CoreTracer$CoreTracerBuilder.build(CoreTracer.java:530)
ERROR> 	at datadog.trace.agent.tooling.TracerInstaller.installGlobalTracer(TracerInstaller.java:34)
ERROR> 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
ERROR> 	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
ERROR> 	at datadog.trace.bootstrap.Agent.installDatadogTracer(Agent.java:815)
ERROR> 	at datadog.trace.bootstrap.Agent.access$300(Agent.java:87)
ERROR> 	at datadog.trace.bootstrap.Agent$InstallDatadogTracerCallback.<init>(Agent.java:666)
ERROR> 	at datadog.trace.bootstrap.Agent.start(Agent.java:391)
ERROR> 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
ERROR> 	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
ERROR> 	at datadog.trace.bootstrap.AgentBootstrap.agentmainImpl(AgentBootstrap.java:166)
ERROR> 	at datadog.trace.bootstrap.AgentBootstrap.agentmain(AgentBootstrap.java:73)
ERROR> 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
ERROR> 	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
ERROR> 	at datadog.trace.bootstrap.AgentPreCheck.continueBootstrap(AgentPreCheck.java:169)
ERROR> 	at datadog.trace.bootstrap.AgentPreCheck.agentmain(AgentPreCheck.java:24)
ERROR> 	at datadog.trace.bootstrap.AgentPreCheck.premain(AgentPreCheck.java:17)
ERROR> 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
ERROR> 	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
ERROR> 	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:560)
ERROR> 	at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:572)

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@mcculls mcculls requested a review from a team as a code owner January 21, 2026 12:05
@mcculls mcculls added the bug Something isn't working label Jan 21, 2026
@mcculls mcculls force-pushed the mcculls/fix-empty-trie-round-trip branch from 3141fa7 to f4082e0 Compare January 21, 2026 12:10
Copy link

@amarziali amarziali left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks - the stacktrace reminds me something :)

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏 praise: ‏Thanks for fixing my report

@mcculls mcculls merged commit d241ed6 into main Jan 21, 2026
6 checks passed
@mcculls mcculls deleted the mcculls/fix-empty-trie-round-trip branch January 21, 2026 13:31
@github-actions github-actions bot added this to the 0.1.0 milestone Jan 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants