Quantcast

Bug with resources.groovy, ref, and my SpringResolver!

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Bug with resources.groovy, ref, and my SpringResolver!

msmyers

I am experiencing an odd bug with Grails and resources.groovy.

 

Here’s my resources.groovy declaration: http://ftp-a1.zipwhip.com/2010-06-09_1321.png

 

So the way that this works, is that we use a broker to process signals. The broker uses a SubscriptionProcessor to process the subscriptions. It uses a SubscriptionProcessorLocator to locate the appropriate processor. The processors are beans.

 

This is a screenshot of the SubscriberCountSubscriptionProcessor that is referenced in the Locator with “ref” in resources.groovy: http://ftp-a1.zipwhip.com/2010-06-09_1325.png

 

This is a screenshot of the Echo version: http://ftp-a1.zipwhip.com/2010-06-09_1327.png

 

Now. Here’s the screenshot of the bug!

Working: http://ftp-a1.zipwhip.com/2010-06-09_1331.png

Not Working: http://ftp-a1.zipwhip.com/2010-06-09_1332.png

 

It says that the MetaClass of a UserCountProcessor is a EchoProcessor! The metaClass is wrong! How is this even possible?

 

BTW, if you want to know the details of the SpringResolver or the SubscriptionProcessorLocator: http://ftp-a1.zipwhip.com/2010-06-09_1334.png

 

So! I’m totally confused. Has anyone ever experienced this?

 

Turns out the one on the bottom always fails: http://ftp-a1.zipwhip.com/2010-06-09_1321.png If I switch the order of “echo” and “subscriberCount” the one on the bottom has the wrong meta class!

 

Is it how I’m using “ref” ??

 

NOTE: The springResolver object has been working for me for about 6 months without issue…

 

-Michael

 

PS: We passed a million users yesterday!

 

 

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

RE: Bug with resources.groovy, ref, and my SpringResolver!

msmyers

Forgot to list the stack trace:

 

java.lang.IllegalArgumentException: object is not an instance of declaring class

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:706)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.invokeMethod(DotCommandSubscriptionProcessorBase.groovy)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.processSignalAfterFilters(DotCommandSubscriptionProcessorBase.groovy:66)

                at com.zipwhip.subscriptions.FilteredSubscriptionProcessorBase.processSignal(FilteredSubscriptionProcessorBase.java:24)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:62)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:47)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:30)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

                at SubscriptionEventService$_processRequest_closure1.doCall(SubscriptionEventService.groovy:49)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.Closure.call(Closure.java:279)

                at groovy.lang.Closure.call(Closure.java:292)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:37)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:31)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:129)

                at SubscriptionEventService.processRequest(SubscriptionEventService.groovy:46)

                at SubscriptionEventService$processRequest.callCurrent(Unknown Source)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)

                at SubscriptionEventService.onMessage(SubscriptionEventService.groovy:61)

                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.util.MethodInvoker.invoke(MethodInvoker.java:273)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:463)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.super$2$invokeListenerMethod(ClosureMessageListenerAdapter.groovy)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:127)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.invokeListenerMethod(ClosureMessageListenerAdapter.groovy:21)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:355)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:534)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:977)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:969)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:871)

                at java.lang.Thread.run(Thread.java:619)

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 1:37 PM
To: [hidden email]
Subject: [grails-user] Bug with resources.groovy, ref, and my SpringResolver!

 

I am experiencing an odd bug with Grails and resources.groovy.

 

Here’s my resources.groovy declaration: http://ftp-a1.zipwhip.com/2010-06-09_1321.png

 

So the way that this works, is that we use a broker to process signals. The broker uses a SubscriptionProcessor to process the subscriptions. It uses a SubscriptionProcessorLocator to locate the appropriate processor. The processors are beans.

 

This is a screenshot of the SubscriberCountSubscriptionProcessor that is referenced in the Locator with “ref” in resources.groovy: http://ftp-a1.zipwhip.com/2010-06-09_1325.png

 

This is a screenshot of the Echo version: http://ftp-a1.zipwhip.com/2010-06-09_1327.png

 

Now. Here’s the screenshot of the bug!

Working: http://ftp-a1.zipwhip.com/2010-06-09_1331.png

Not Working: http://ftp-a1.zipwhip.com/2010-06-09_1332.png

 

It says that the MetaClass of a UserCountProcessor is a EchoProcessor! The metaClass is wrong! How is this even possible?

 

BTW, if you want to know the details of the SpringResolver or the SubscriptionProcessorLocator: http://ftp-a1.zipwhip.com/2010-06-09_1334.png

 

So! I’m totally confused. Has anyone ever experienced this?

 

Turns out the one on the bottom always fails: http://ftp-a1.zipwhip.com/2010-06-09_1321.png If I switch the order of “echo” and “subscriberCount” the one on the bottom has the wrong meta class!

 

Is it how I’m using “ref” ??

 

NOTE: The springResolver object has been working for me for about 6 months without issue…

 

-Michael

 

PS: We passed a million users yesterday!

 

 

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

RE: Bug with resources.groovy, ref, and my SpringResolver!

msmyers

More information:

 

I took out the locator:

 

And created this test case: http://ftp-a1.zipwhip.com/2010-06-09_1430.png

 

But I am getting this in the logs:

 

com.zipwhip.subscriptions.dotcmd.EchoDotCommandSubscriptionProcessor

com.zipwhip.subscriptions.dotcmd.EchoDotCommandSubscriptionProcessor

 

This seems pretty fundamentally wrong? I’ve already upgraded to Grails 1.3.1 from Grails 1.2.0 to see if that would resolve the issue.

 

Echo and UserCount absolutely are not related. They are separate classes with a common base class.

 

-M

 

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 1:44 PM
To: [hidden email]
Subject: [grails-user] RE: Bug with resources.groovy, ref, and my SpringResolver!

 

Forgot to list the stack trace:

 

java.lang.IllegalArgumentException: object is not an instance of declaring class

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:706)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.invokeMethod(DotCommandSubscriptionProcessorBase.groovy)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.processSignalAfterFilters(DotCommandSubscriptionProcessorBase.groovy:66)

                at com.zipwhip.subscriptions.FilteredSubscriptionProcessorBase.processSignal(FilteredSubscriptionProcessorBase.java:24)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:62)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:47)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:30)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

                at SubscriptionEventService$_processRequest_closure1.doCall(SubscriptionEventService.groovy:49)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.Closure.call(Closure.java:279)

                at groovy.lang.Closure.call(Closure.java:292)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:37)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:31)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:129)

                at SubscriptionEventService.processRequest(SubscriptionEventService.groovy:46)

                at SubscriptionEventService$processRequest.callCurrent(Unknown Source)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)

                at SubscriptionEventService.onMessage(SubscriptionEventService.groovy:61)

                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.util.MethodInvoker.invoke(MethodInvoker.java:273)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:463)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.super$2$invokeListenerMethod(ClosureMessageListenerAdapter.groovy)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:127)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.invokeListenerMethod(ClosureMessageListenerAdapter.groovy:21)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:355)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:534)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:977)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:969)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:871)

                at java.lang.Thread.run(Thread.java:619)

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 1:37 PM
To: [hidden email]
Subject: [grails-user] Bug with resources.groovy, ref, and my SpringResolver!

 

I am experiencing an odd bug with Grails and resources.groovy.

 

Here’s my resources.groovy declaration: http://ftp-a1.zipwhip.com/2010-06-09_1321.png

 

So the way that this works, is that we use a broker to process signals. The broker uses a SubscriptionProcessor to process the subscriptions. It uses a SubscriptionProcessorLocator to locate the appropriate processor. The processors are beans.

 

This is a screenshot of the SubscriberCountSubscriptionProcessor that is referenced in the Locator with “ref” in resources.groovy: http://ftp-a1.zipwhip.com/2010-06-09_1325.png

 

This is a screenshot of the Echo version: http://ftp-a1.zipwhip.com/2010-06-09_1327.png

 

Now. Here’s the screenshot of the bug!

Working: http://ftp-a1.zipwhip.com/2010-06-09_1331.png

Not Working: http://ftp-a1.zipwhip.com/2010-06-09_1332.png

 

It says that the MetaClass of a UserCountProcessor is a EchoProcessor! The metaClass is wrong! How is this even possible?

 

BTW, if you want to know the details of the SpringResolver or the SubscriptionProcessorLocator: http://ftp-a1.zipwhip.com/2010-06-09_1334.png

 

So! I’m totally confused. Has anyone ever experienced this?

 

Turns out the one on the bottom always fails: http://ftp-a1.zipwhip.com/2010-06-09_1321.png If I switch the order of “echo” and “subscriberCount” the one on the bottom has the wrong meta class!

 

Is it how I’m using “ref” ??

 

NOTE: The springResolver object has been working for me for about 6 months without issue…

 

-Michael

 

PS: We passed a million users yesterday!

 

 

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

RE: Bug with resources.groovy, ref, and my SpringResolver!

msmyers

The two classes were Java files. The base class was a Groovy file.

 

I resolved the issue by cut/paste the code from the Groovy file into a Java file, and it worked. I now get this in the syslog:

 

com.zipwhip.subscriptions.dotcmd.EchoDotCommandSubscriptionProcessor

com.zipwhip.subscriptions.dotcmd.UserCountDotCommandSubscriptionProcessor

 

as expected.

 

 

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 2:32 PM
To: [hidden email]
Subject: [grails-user] RE: Bug with resources.groovy, ref, and my SpringResolver!

 

More information:

 

I took out the locator:

 

And created this test case: http://ftp-a1.zipwhip.com/2010-06-09_1430.png

 

But I am getting this in the logs:

 

com.zipwhip.subscriptions.dotcmd.EchoDotCommandSubscriptionProcessor

com.zipwhip.subscriptions.dotcmd.EchoDotCommandSubscriptionProcessor

 

This seems pretty fundamentally wrong? I’ve already upgraded to Grails 1.3.1 from Grails 1.2.0 to see if that would resolve the issue.

 

Echo and UserCount absolutely are not related. They are separate classes with a common base class.

 

-M

 

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 1:44 PM
To: [hidden email]
Subject: [grails-user] RE: Bug with resources.groovy, ref, and my SpringResolver!

 

Forgot to list the stack trace:

 

java.lang.IllegalArgumentException: object is not an instance of declaring class

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:706)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.invokeMethod(DotCommandSubscriptionProcessorBase.groovy)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)

                at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at com.zipwhip.subscriptions.dotcmd.DotCommandSubscriptionProcessorBase.processSignalAfterFilters(DotCommandSubscriptionProcessorBase.groovy:66)

                at com.zipwhip.subscriptions.FilteredSubscriptionProcessorBase.processSignal(FilteredSubscriptionProcessorBase.java:24)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:62)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:47)

                at com.zipwhip.subscriptions.DefaultSubscriptionBroker.routeSignal(DefaultSubscriptionBroker.java:30)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

                at SubscriptionEventService$_processRequest_closure1.doCall(SubscriptionEventService.groovy:49)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880)

                at groovy.lang.Closure.call(Closure.java:279)

                at groovy.lang.Closure.call(Closure.java:292)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:37)

                at com.zipwhip.performance.QOSMonitor.doWithAgent(QOSMonitor.java:31)

                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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

                at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:129)

                at SubscriptionEventService.processRequest(SubscriptionEventService.groovy:46)

                at SubscriptionEventService$processRequest.callCurrent(Unknown Source)

                at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)

                at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)

                at SubscriptionEventService.onMessage(SubscriptionEventService.groovy:61)

                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.util.MethodInvoker.invoke(MethodInvoker.java:273)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:463)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.super$2$invokeListenerMethod(ClosureMessageListenerAdapter.groovy)

                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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)

                at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)

                at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)

                at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:923)

                at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:127)

                at org.codehaus.grails.jms.ClosureMessageListenerAdapter.invokeListenerMethod(ClosureMessageListenerAdapter.groovy:21)

                at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:355)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:534)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495)

                at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)

                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:977)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:969)

                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:871)

                at java.lang.Thread.run(Thread.java:619)

 

From: Michael Smyers [mailto:[hidden email]]
Sent: Wednesday, June 09, 2010 1:37 PM
To: [hidden email]
Subject: [grails-user] Bug with resources.groovy, ref, and my SpringResolver!

 

I am experiencing an odd bug with Grails and resources.groovy.

 

Here’s my resources.groovy declaration: http://ftp-a1.zipwhip.com/2010-06-09_1321.png

 

So the way that this works, is that we use a broker to process signals. The broker uses a SubscriptionProcessor to process the subscriptions. It uses a SubscriptionProcessorLocator to locate the appropriate processor. The processors are beans.

 

This is a screenshot of the SubscriberCountSubscriptionProcessor that is referenced in the Locator with “ref” in resources.groovy: http://ftp-a1.zipwhip.com/2010-06-09_1325.png

 

This is a screenshot of the Echo version: http://ftp-a1.zipwhip.com/2010-06-09_1327.png

 

Now. Here’s the screenshot of the bug!

Working: http://ftp-a1.zipwhip.com/2010-06-09_1331.png

Not Working: http://ftp-a1.zipwhip.com/2010-06-09_1332.png

 

It says that the MetaClass of a UserCountProcessor is a EchoProcessor! The metaClass is wrong! How is this even possible?

 

BTW, if you want to know the details of the SpringResolver or the SubscriptionProcessorLocator: http://ftp-a1.zipwhip.com/2010-06-09_1334.png

 

So! I’m totally confused. Has anyone ever experienced this?

 

Turns out the one on the bottom always fails: http://ftp-a1.zipwhip.com/2010-06-09_1321.png If I switch the order of “echo” and “subscriberCount” the one on the bottom has the wrong meta class!

 

Is it how I’m using “ref” ??

 

NOTE: The springResolver object has been working for me for about 6 months without issue…

 

-Michael

 

PS: We passed a million users yesterday!

 

 

Loading...