我们正在对托管在 Glassfish 3.1.1 App Server 上的 Grails 应用程序(Grails 2.0 版本)进行负载测试。在测试时,我们不断地在 ExpandoMetaClass 的performOperationOnMetaClass方法中阻塞线程。给出了堆栈跟踪。这是 Grails 的一个已知问题吗?
"http-thread-pool-11180(427)" daemon prio=6 tid=0x000000002e1ec800 nid=0x1e90 waiting for monitor entry [0x000000006944c000]
java.lang.Thread.State: BLOCKED (on object monitor)
at groovy.lang.ExpandoMetaClass.performOperationOnMetaClass(ExpandoMetaClass.java:809)
- waiting to lock <0x00000007d1ce8e88> (a groovy.lang.ExpandoMetaClass)
at groovy.lang.ExpandoMetaClass.registerInstanceMethod(ExpandoMetaClass.java:873)
at groovy.lang.ExpandoMetaClass.setProperty(ExpandoMetaClass.java:788)
at org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:179)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:480)
at org.codehaus.groovy.grails.plugins.web.filters.FilterConfig.methodMissing(FilterConfig.groovy:86)
at sun.reflect.GeneratedMethodAccessor336.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:828)</code>
堆栈跟踪更长,最终从 org.codehaus.groovy.grails.plugins.web.taglib.SitemeshTagLib.captureTagContent(SitemeshTagLib.groovy) 开始。有人遇到过这些错误吗?