Spring MVC lock at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle

(Doc ID 1552013.1)

Last updated on NOVEMBER 05, 2016

Applies to:

Oracle WebLogic Server - Version 10.3 to 12.1.1.0
Information in this document applies to any platform.

Symptoms

when Spring MVC is used in an web application we are seeing stuck threads from spring code which is holding the lock.

"[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03d69c00 nid=0x35 waiting for monitor entry [0x8045c000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)

"[ACTIVE] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x02e05c00 nid=0x34 waiting for monitor entry [0x804ef000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at weblogic.servlet.internal.session.SessionData.decrementActiveRequestCount(SessionData.java:914)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at weblogic.servlet.internal.session.MemorySessionContext.sync(MemorySessionContext.java:10

"[ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03b68000 nid=0x33 waiting for monitor entry [0x8057c000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at com.domain.nahq.core.apmd.aspects.NahqDispatcher.doDispatch(NahqDispatcher.java:47)

"[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03f4a000 nid=0x31 waiting for monitor entry [0x8069c000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at com.domain.nahq.core.apmd.aspects.NahqDispatcher.doDispatch(NahqDispatcher.java:47)

"[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03f47c00 nid=0x30 waiting for monitor entry [0x8072c000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at com.domain.nahq.core.apmd.aspects.NahqDispatcher.doDispatch(NahqDispatcher.java:47)

"[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x036a9000 nid=0x2e waiting for monitor entry [0x8084c000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at com.domain.nahq.core.apmd.aspects.NahqDispatcher.doDispatch(NahqDispatcher.java:47)

"[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03d90000 nid=0x2d waiting for monitor entry [0x8091f000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at weblogic.servlet.internal.session.SessionData.decrementActiveRequestCount(SessionData.java:914)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at weblogic.servlet.internal.session.MemorySessionContext.sync(MemorySessionContext.java:100)

"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=3 tid=0x03cdc000 nid=0x27 waiting for monitor entry [0x80c7f000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at weblogic.servlet.internal.session.SessionData.decrementActiveRequestCount(SessionData.java:914)
- waiting to lock (a weblogic.servlet.internal.session.MemorySessionData)
at weblogic.servlet.internal.session.MemorySessionContext.sync(MemorySessionContext.java:100)

 

The one holding the lock was thread 10, which was executing com.domain.nahq.core.apmd.web.controller.ExcelIOController.handleDownRequest():

at com.domain.nahq.core.apmd.web.controller.ExcelIOController.handleDownRequest(ExcelIOController.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
- locked (a weblogic.servlet.internal.session.MemorySessionData)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms