• Forums
    • Public Forums
      • Community Connect
      • Dynatrace
        • Dynatrace Open Q&A
      • Application Monitoring & UEM
        • AppMon & UEM Open Q&A
      • Network Application Monitoring
        • NAM Open Q&A
  • Home
  • Public Forums
  • Application Monitoring & UEM
  • AppMon & UEM Open Q&A
avatar image
Question by Roy L. · Oct 29, 2014 at 08:16 PM ·

Spring AOP conflicting with Dynatrace instrumentation

Has anyone else experienced this?

We're using Spring 3.2.8 and DT 6.0

It looks like Spring AOP complains when DT instruments a class that Spring AOP has instrumented already.  Upon starting the Tomcat JVM, the error looks like this:

nested exception is java.lang.VerifyError: (class: Whatever$$EnhancerBySpringCGLIB$$1e40391d, method: doFilter signature: (Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V) Inconsistent stack height 0 != 1

Basically, DT instruments "Whatever$$EnhancerBySpringCGLIB$$1e40391d" after Spring AOP has instrumented it.

One should be able to reproduce it by using:

<aop:scoped-proxy/>

in the bean declaration.  This will instruct Spring to instrument the class.  And it will blow up when DT attempts to re-instrument it.

Creating an exclusion did not work, though I am not sure why.  Here's how I attempted to do that:

  1. Create a new Sensor group called 'Ignore'.
  2. Add class with pattern $$EnhancerBySpringCGLIB$$ and set the matching to Contains.
  3. Add Global Exclude method rule.
  4. Add 'Ignore' sensor placement to agent group.
  5. Restart JVM.  Still the error persists

 

 

Comment

People who like this

0 Show 0
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

5 Replies

  • Sort: 
  • Most voted
  • Newest
  • Oldest
avatar image

Answer by Roy L. · Nov 20, 2014 at 03:56 PM

Looks like that did the trick, thanks guys!

Comment

People who like this

0 Show 0 · Share
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

avatar image

Answer by Joe H. · Oct 31, 2014 at 12:28 AM

Good catch Harold,  We will try the UEM sensor.

Comment

People who like this

0 Show 0 · Share
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

avatar image

Answer by Harald B. · Oct 30, 2014 at 03:53 PM

Roy,

Did you check the UEM sensor as well? This sensor does also Servlet transformation, and the classes must be excluded the same way.

Harry

Comment

People who like this

0 Show 0 · Share
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

avatar image

Answer by Roy L. · Oct 30, 2014 at 01:16 AM

Thanks, I realize that now.  I have been working with Joe Hoffman on the issue.  He has created an exclude at the sensor pack level for Servlet for my dT 6.0 instance (on the cloud here).  However, still the error persists.  We are still not sure why that is the case.

I even tried un-placing the Servlet sensor pack, thinking that it would skip instrumenting all classes it is 'responsible' for (not sure how this 'scope of responsibility' is determined - by Java package name??), just to see if it makes a difference, but the error still persists.  Probably I'm not understanding the role of sensor packs with respect to instrumentation.

Comment

People who like this

0 Show 0 · Share
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

avatar image

Answer by Harald B. · Oct 29, 2014 at 10:48 PM

Roy,

A global exclude does not work here. You have to exclude it at agent level or at sensor pack level (servlet and UEM). This has been fixed with 6.1

Regards

Harry

Comment

People who like this

0 Show 0 · Share
10 |2000000 characters needed characters left characters exceeded
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Toggle Comment visibility. Current Visibility: Viewable by all users

Up to 10 attachments (including images) can be used with a maximum of 50.0 MiB each and 250.0 MiB total.

How to get started

First steps in the forum
Read Community User Guide
Best practices of using forum

NAM 2019 SP5 is available


Check the RHEL support added in the latest NAM service pack.

Learn more

LIVE WEBINAR

"Performance Clinic - Monitoring as a Self Service with Dynatrace"


JANUARY 15, 3:00 PM GMT / 10:00 AM ET

Register here

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Forum Tags

dotnet mobile monitoring load iis 6.5 kubernetes mainframe rest api dashboard framework 7.0 appmon 7 health monitoring adk log monitoring services auto-detection uem webserver test automation license web performance monitoring ios nam probe collector migration mq web services knowledge sharing reports window java hybris javascript appmon sensors good to know extensions search 6.3+ server documentation easytravel web dashboard kibana system profile purelytics docker splunk 6.1 process groups account 7.2 rest dynatrace saas spa guardian appmon administration production user actions postgresql upgrade oneagent measures security Dynatrace Managed transactionflow technologies diagnostics user session monitoring unique users continuous delivery sharing configuration alerting NGINX splitting business transaction client 6.3 installation database scheduler apache mobileapp RUM php dashlet azure purepath agent 7.1 appmonsaas messagebroker nodejs 6.2 android sensor performance warehouse
  • Forums
  • Public Forums
    • Community Connect
    • Dynatrace
      • Dynatrace Open Q&A
    • Application Monitoring & UEM
      • AppMon & UEM Open Q&A
    • Network Application Monitoring
      • NAM Open Q&A