Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0-RC1
-
Fix Version/s: 2.2-RC2
-
Component/s: None
-
Labels:None
Description
I'm seeing Spring loaded occasionally getting stuck calling WeakHashMap.get and the browser hangs. I've only seen this a couple of times, but probably worth investigating
Thread dump:
""http-bio-8080"-exec-1" daemon prio=5 tid=7fcd79fdb800 nid=0x10de2c000 runnable [10de25000] java.lang.Thread.State: RUNNABLE at java.util.WeakHashMap.get(WeakHashMap.java:355) at com.springsource.loaded.ri.ReflectiveInterceptor.getRType(ReflectiveInterceptor.java:811) at com.springsource.loaded.ri.ReflectiveInterceptor.jlClassGetModifiers(ReflectiveInterceptor.java:721) at org.codehaus.groovy.reflection.CachedClass.<init>(CachedClass.java:224) at org.codehaus.groovy.reflection.stdclasses.CachedClosureClass.<init>(CachedClosureClass.java:27) at org.codehaus.groovy.reflection.ClassInfo.createCachedClass(ClassInfo.java:259) at org.codehaus.groovy.reflection.ClassInfo.access$400(ClassInfo.java:36) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:425) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:416) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.ClassInfo.getCachedClass(ClassInfo.java:89) at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:107) at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:166) at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:190) at groovy.lang.ExpandoMetaClass.<init>(ExpandoMetaClass.java:301) at groovy.lang.ExpandoMetaClass.<init>(ExpandoMetaClass.java:344) at groo
-
- fulldump.txt
- 15/Nov/11 3:25 AM
- 117 kB
- Graeme Rocher
-
- threaddump-rahul.txt
- 15/May/12 3:44 PM
- 126 kB
- rahul somasunderam
Issue Links
- is duplicated by
-
GRAILS-8396
Spring loaded / classloader setup causes occasional deadlock
-
- is related to
-
GRAILS-8359
Deadlock under high load
-
Activity
- All
- Comments
- Work Log
- History
- Activity
- Git Commits
I'm also seeing threads getting stuck on
""http-bio-8080"-exec-6" daemon prio=5 tid=7fc1cbc8b000 nid=0x10c330000 runnable [10c328000] java.lang.Thread.State: RUNNABLE at java.util.HashMap.put(HashMap.java:374) at java.util.HashSet.add(HashSet.java:200) at com.springsource.loaded.ReloadableType.trackLiveInstance(ReloadableType.java:1402) at com.springsource.loaded.ISMgr.<init>(ISMgr.java:31) at org.grails.plugin.resource.ResourceProcessor$_getConfigParamOrDefault_closure22.<init>(ResourceProcessor.groovy) at org.grails.plugin.resource.ResourceProcessor.getConfigParamOrDefault(ResourceProcessor.groovy:856) at org.grails.plugin.resource.ResourceProcessor$getConfigParamOrDefault.callCurrent(Unknown Source) at org.grails.plugin.resource.ResourceProcessor.isDebugMode(ResourceProcessor.groovy:866)
I can see that these are probably due to weakhashmap not being threadsafe. I can enhance my usages to a Collections.synchronizedMap() version of it but I am a tiny bit concerned about performance impact of just doing that without a bit more thought.
You could use Google collections library to build a concurrent weak hashmap, but obviously that would introduce a dependency on Google collections
RE: the second trace in here (15Nov-7:47AM).
I've fixed this one - synchronized that map which means it shouldn't happen again. That map is not accessed as often as the one for which this issue was originally raised.
RE: the first stack trace.
In SpringLoaded 1.0.2 I have not synchronized the map by default (yet), but you can try out whether synchronization would fix the situation by setting this sys prop: -Dspringloaded.synchronize=true (probably have to put that in JAVA_OPTS or modify the startGrails script)
In GRAILS-8359, the problem is in an unsynchronized HashSet. stacktrace from GRAILS-8359 bug reporter:
com.springsource.loaded.ISMgr.<init>(Object, ReloadableType)
com.springsource.loaded.ReloadableType.trackLiveInstance(Object)
java.util.HashSet.add(Object)
I'm running into it more often now. It happens at least once in 4 {{run-app}}s. This is my Thread dump. And I run into this before the app loads up the 8080 port.
Would be awesome if it's resolved in a 2.0.4.
Rahul - have you tried the system property recommended in this bug, does that help? That will just confirm you are hitting what we think the problem is.
Andy, does this relate to the bug we have with 1.06 of spring loaded?
java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira
at com.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:91)
at sun.instrument.TransformerManager.transform(TransformerManager.java:169)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
at java.beans.Introspector.<clinit>(Introspector.java:91)
at ch.qos.logback.core.joran.util.PropertySetter.introspect(PropertySetter.java:79)
at ch.qos.logback.core.joran.util.PropertySetter.getMethod(PropertySetter.java:393)
at ch.qos.logback.core.joran.util.PropertySetter.findAdderMethod(PropertySetter.java:203)
at ch.qos.logback.core.joran.util.PropertySetter.computeAggregationType(PropertySetter.java:177)
at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.isApplicable(NestedComplexPropertyIA.java:61)
at ch.qos.logback.core.joran.spi.Interpreter.lookupImplicitAction(Interpreter.java:238)
at ch.qos.logback.core.joran.spi.Interpreter.getApplicableActionList(Interpreter.java:257)
at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:145)
at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130)
at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:147)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:133)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:96)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:55)
at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:54)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:279)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:252)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
at org.springframework.util.PropertyPlaceholderHelper.<clinit>(PropertyPlaceholderHelper.java:40)
at org.springframework.util.SystemPropertyUtils.<clinit>(SystemPropertyUtils.java:49)
at org.springframework.util.Log4jConfigurer.initLogging(Log4jConfigurer.java:66)
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 com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.grails.maven.plugin.AbstractGrailsMojo.invokeStaticMethod(AbstractGrailsMojo.java:631)
at org.grails.maven.plugin.AbstractGrailsMojo.runGrails(AbstractGrailsMojo.java:453)
at org.grails.maven.plugin.GrailsExecMojo.execute(GrailsExecMojo.java:51)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
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 com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1231)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.ClassCircularityError: com/sun/beans/WeakCache
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
at java.lang.Class.getDeclaredField(Class.java:1880)
at com.springsource.loaded.agent.SpringLoadedPreProcessor.injectReflectiveInterceptorMethods(SpringLoadedPreProcessor.java:330)
at com.springsource.loaded.agent.SpringLoadedPreProcessor.tryToEnsureSystemClassesInitialized(SpringLoadedPreProcessor.java:270)
at com.springsource.loaded.agent.SpringLoadedPreProcessor.preProcess(SpringLoadedPreProcessor.java:105)
at com.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:89)
... 61 more
| Loading Grails 2.0.3 |
@Richard: The main cause of the "Reloading agent exited via exception" was fixed in springloaded 1.0.6. That main root cause was "java.lang.UnsupportedOperationException: unable to watch" but your root cause here is "java.lang.ClassCircularityError: com/sun/beans/WeakCache" which is a very different thing and definitely not addressed in 1.0.6. Can you raise a new jira for it if you are still being hit by it? thanks. There appears to also be a case of it mentioned in http://jira.grails.org/browse/GRAILS-9019.
I am also seeing deadlock on reloading in 2.1.0 It is happening often enough I am considering rolling application back to 1.3.8
Hi Keith - Per my comment further up, have you tried specifying the system property to activate the threadsafe collection usage?
-Dspringloaded.synchronize=true (probably have to put that in JAVA_OPTS or modify the startGrails script)
For what it's worth, I set -Dspringloaded.synchronize=true in my JAVA_OPTS, and haven't run into this issue since.
I'm frequently running in to an issue while running our Grails 2.1.1 application in development mode that seems similar to what is described here. In my case, the application becomes unresponsive and top shows the Grails Java process as using close to 400% CPU (on a CPU with 2 double-threaded cores). A stack dump shows several "http-bio-8080-exec-##" threads in the RUNNABLE state at java.util.HashMap.getEntry. Note that I am definitely running the application with the system property springloaded.synchronize=true, which I confirmed by looking at the JVM's system properties in VisualVM. Here's the stack of one of the threads of interest:
"http-bio-8080-exec-10" daemon prio=10 tid=0x00007fd1e4014800 nid=0x39ea runnable [0x00007fd1090a9000] java.lang.Thread.State: RUNNABLE at java.util.HashMap.getEntry(HashMap.java:446) at java.util.HashMap.get(HashMap.java:405) at com.springsource.loaded.ri.ReloadableTypeMethodProvider.getMethod(ReloadableTypeMethodProvider.java:88) at com.springsource.loaded.ri.ReflectiveInterceptor.jlClassGetMethod(ReflectiveInterceptor.java:110) at org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor.matches(AuthorizationAttributeSourceAdvisor.java:92) at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:227) at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:264) at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:296) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:130) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1098) at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.getControllerInstance(AbstractGrailsControllerHelper.java:99) at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:152) at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:117) at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:72) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:323) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:312) at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:277) at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:268) at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:209) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200) at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at javax.servlet.FilterChain$doFilter.call(Unknown Source) at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:69) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) - locked <0x00000007fdfbd328> (a org.apache.tomcat.util.net.SocketWrapper) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
It does look like a different issue - I think a new jira is the best option. Can you attach a full stack dump for all threads to it? (jps output)
I opened GRAILS-9620 for my situation with some jstack output attached.
full thread dump attached