Comments (17)
@tony-schellenberg I don't think failing to resolve net.bytebuddy.dynamic.Nexus
would affect the JMS instrumentation. I think in this case that's not actually an error due to the class being dynamically generated.
I can take a look through your full debug log if you can send those.
from dd-trace-java.
I think I can do that. Do you just need all the DataDog lines?
from dd-trace-java.
Yes, that will do it. Thanks!
from dd-trace-java.
I'm just looking at the logs. Is there a secure way for me to transfer them to you? I don't think there's anything sensitive in them but it's probably better if I don't just post them. Should I open a ticket with support and provide them there and give you the ticket number here?
from dd-trace-java.
Yeah going through the support system and posting the ticket number is the best way to get those logs to me.
from dd-trace-java.
I have posted a log to ticket #171383
from dd-trace-java.
I took a look through the logs. I think the missing Nexus
class is a red herring. I don't see the JMS Instrumentation attempting to apply. Which JMS client (and version) are you running with?
from dd-trace-java.
The JMS implementation is com.sun.messaging.mq:imq:3.5. The jms version is 1.1.
I know this is an old client. In our code, we are using the javax type such as javax.jms.MessageProducer with this library.
from dd-trace-java.
@tony-schellenberg Is that even available in maven central? I only see version 4.2+ there.
We'd be happy to run it through some tests to verify compatibility, but that becomes a challenge if it's not in maven central.
from dd-trace-java.
I don't know if it's there or not. We had the product since before it was OpenMQ back when it was paid. We have our own Maven server that mirrors maven central but also has other artifacts so this one might not be generally available.
Given that it supports the javax.jms interfaces, can you think of a reason that it wouldn't instrument? Is there something that I can look for in it or a way that I can run the tests?
from dd-trace-java.
@tony-schellenberg When running with debug logging enabled, I'd expect to see these kinds of messages:
[Test worker] DEBUG datadog.trace.agent.tooling.Instrumenter$Default - Applying instrumentation: okhttp -- datadog.trace.instrumentation.okhttp3.OkHttp3Instrumentation on sun.misc.Launcher$AppClassLoader@15db9742
[Test worker] DEBUG datadog.trace.agent.tooling.AgentInstaller$LoggingListener - Transformed class okhttp3.OkHttpClient -- sun.misc.Launcher$AppClassLoader@15db9742
[Test worker] DEBUG datadog.trace.bootstrap.ExceptionLogger - Failed to handle exception in instrumentation
Another message you should search for in the logs is Instrumentation muzzled
, which might give indication as to why the library might be skipped.
from dd-trace-java.
I can't see anything in the logs referring to instrumentation being muzzled.
I unpacked the imq library and did a bit of digging. There is a concrete implementation that implements javax.jms.MessageProducer. I'm don't have much understanding of how the auto instrumentation works. Is there some other obvious reason why it wouldn't be able to find it that I can dig into?
from dd-trace-java.
Generally the way our instrumentation works:
- A matcher sees a class it could potentially instrument (like in your jms-producer link)
- The classpath is checked to ensure it's safe to apply instrumentation.
- Instrumentation applies or logs a failure to apply.
Any of these stages would have produced something in the log file.
I think the issue is we're skipping instrumentation because the class name starts with com.sun
. We skip "core" namespaces for performance reasons.
Can you confirm the package-namespace of the client you're trying to instrument?
from dd-trace-java.
I think you might have figured it out. The one class I'm looking at so far is com.sun.messaging.jmq.jmsclient.MessageProducerImpl
from dd-trace-java.
Great, that explains it. We should be good to whitelist com.sun.messaging.
. Do you think that will cover your client's namespace?
from dd-trace-java.
From what I can see of it, I think that should be good. Thanks for helping me out with this.
from dd-trace-java.
Fix is included in 0.17.0.
from dd-trace-java.
Related Issues (20)
- Add ability to provide custom normalization of URI mapping saved as resource name
- Cannot decode v0.4 traces payload: msgp: attempted to decode type "array" with method for "str" HOT 1
- feature request - instrumentation for https://github.com/http-kit/http-kit
- Trace id in logs are different from datadog trace id in web HOT 2
- dd-trace-java v1.31.2 crashes the JVM HOT 4
- RabbitMQ instrumentation tests is flaky HOT 1
- Spring Webflux 5 instrumentation tests are flaky
- Vert.X Redis client 4 instrumentation tests are flaky
- Grizzly http 2.3.20 instrumentation tests are flaky HOT 1
- Feature Request: Missing trace for JUnit5 BeforeAll/AfterAll methods in CIVisibility Instrumentation HOT 4
- BUG: dd-trace-java with version 1.33.0 causes InvalidCookieDomainException. In 1.32.0 works fine. HOT 3
- Live-heap profiler (alpha) in dd-trace-java v1.33.0 crashes the JVM. (After updated from v1.32.0) HOT 6
- Play Scala integration tests are flaky
- Spark instrumentation tests are flaky
- DD agent is not compatible with Quarkus 3.10 HOT 2
- Gradle smoke tests are flaky HOT 1
- Maven smoke tests are flaky HOT 1
- JDBC connection service mapping not being used, and traceparent missing, in SQL comment HOT 6
- With Unix Domain Socket, DD_AGENT_HOST not ignored despite DD_TRACE_AGENT_URL HOT 4
- Jetty9 instrumentation tests are flaky
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dd-trace-java.