Thanks Barry . From: Barry Oglesby [mailto:[email protected]] Sent: Wednesday, June 01, 2016 19:56 To: [email protected] Cc: geode ([email protected]) Subject: Re: Async queue mechanism
Sure. Its a pretty simple fix. When the xml is parsed, the AEQ's attributes are set into an intermediate object called an AsyncEventQueueCreation. The AsyncEventQueueImpl is instantiated based on this AsyncEventQueueCreation. During this processing, any configured GatewayEventFilters were left behind and not set on the AsyncEventQueueImpl. The fix was to not leave any configured GatewayEventFilters behind. Thanks, Barry Oglesby On Tue, May 31, 2016 at 11:16 PM, Gal Palmery <[email protected]<mailto:[email protected]>> wrote: Thanks a lot Barry! Can you pls share the quick explanation about the fix? From: Barry Oglesby [mailto:[email protected]<mailto:[email protected]>] Sent: Wednesday, June 01, 2016 03:44 To: [email protected]<mailto:[email protected]> Cc: geode ([email protected]<mailto:[email protected]>) Subject: Re: Async queue mechanism I see the issue. It looks like a merge issue. I have a fix that I'll check in in the next day or so. Thanks, Barry Oglesby On Tue, May 31, 2016 at 12:52 PM, Barry Oglesby <[email protected]<mailto:[email protected]>> wrote: I see this same behavior. I'll look into it a bit more and let you know what I find. Thanks, Barry Oglesby On Sun, May 29, 2016 at 5:38 AM, Gal Palmery <[email protected]<mailto:[email protected]>> wrote: +Adding the dev group Thanks, Gal From: Gal Palmery Sent: Sunday, May 29, 2016 15:30 To: [email protected]<mailto:[email protected]> Subject: Async queue mechanism Hi, We are using the Async queue mechanism when inserting objects into the regions, which is defined as follows: <async-event-queue id="myQueue" persistent="false" parallel="true" batch-size="10" disk-store-name="queue-overflow" maximum-queue-memory="256"> <gateway-event-filter> <class-name>imdg.listeners.myClassFilter</class-name> </gateway-event-filter> < > <class-name>imdg.listeners.myClassSubstitutionFilter</class-name> </gateway-event-substitution-filter> <async-event-listener> <class-name>imdg.listeners.myClassListener</class-name> </async-event-listener> </async-event-queue> In gemfire version 8.2,these were the steps for inserting the object to the queue : · SubstitutionFilter : we are taking the required objects from the event object and return them as the result to the filter. · Filter: beforeEnqueue method is invoked and it’s decided if the object will be passed to the listener. (In our filter classes - if the object is null we are not sending it to the listener) · Listener: gets the de-serialized value, processes it puts it in the relevant regions. Seems like in geode we are not passing through beforeEnqueue method in the Fillter step, and the null objects are not been filtered. This means that when there is no object to pass through the queue, still null will be passed, and in the listener code, when asking for the de-serialized value, we are getting also the null object, which results in a Null Pointer Exception. Was anything changed recently in the Async queue mechanism? Thanks, Gal This message and the information contained herein is proprietary and confidential and subject to the Amdocs policy statement, you may review at http://www.amdocs.com/email_disclaimer.asp
