Hi all,

Has anyone come across the following error before when using continuous queries?

java.lang.Throwable: Exception occurred while applying query on a cache event.
        at 
org.apache.geode.cache.query.cq.internal.CqEventImpl.setException(CqEventImpl.java:131)
 ~[geode-cq-1.9.2.jar!/:na]
        at 
org.apache.geode.cache.query.cq.internal.CqEventImpl.<init>(CqEventImpl.java:53)
 ~[geode-cq-1.9.2.jar!/:na]
        at 
org.apache.geode.cache.query.cq.internal.CqServiceImpl.dispatchCqListeners(CqServiceImpl.java:960)
 ~[geode-cq-1.9.2.jar!/:na]
        at 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.processCqs(CacheClientUpdater.java:1319)
 [geode-core-1.9.2.jar!/:na]
        at 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.handleUpdate(CacheClientUpdater.java:757)
 [geode-core-1.9.2.jar!/:na]
        at 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.processMessages(CacheClientUpdater.java:1660)
 [geode-core-1.9.2.jar!/:na]
        at 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.run(CacheClientUpdater.java:487)
 [geode-core-1.9.2.jar!/:na]

I have two continuous queries in my app.  The first one works, the second one 
doesn't.

The first one is:
SELECT * from /FM_TRADE_EVENTS WHERE tradeAuditAction <> 'MATURE'
It fetches JSON documents that have been serialized as PDX.  The onEvent method 
in my CqListener implementation is successfully called with events that look 
like:
CqEvent [CqName=tradeEventListener; base operation=CREATE; cq operation=CREATE; 
key=TRADE-1006; value=PDX[19350515,__GEMFIRE_JSON]{...}]
(I've replaced the JSON document with ... for brevity.)

The second one selects from a different region:
SELECT * from /FM_TRADE_EVENTS_STATE WHERE subscriberID = 'MIR' AND status.name 
= 'Pending'
It fetches objects that were serialized from java POJOs of type 
GemfireEventState (a custom type).  The onError method (not onEvent) in my 
CqListener implementation is called with events that look like:
CqEvent [CqName=tradeEventStateListener; base operation=CREATE; cq 
operation=null; key=TRADE-1006:MIR; 
value=com.westpac.rdp.event.gemfire.GemfireEventState@2b503086[eventKey=TRADE-1006,subscriberID=MIR,status=Pending,errorMessage=<null>]]
... and they contain a throwable as above.

It looks like the second query fails because the event has the "cq operation" 
field set to null.  The question is why is it null?  (In the first one both the 
base operation and cq operation are CREATE).

Another piece of info that may be relevant: the region queried by the second 
CqListener is populated by the first CqListener

Any help would be much appreciated!

Thanks in advance ...

Stephen

Confidential communication
Westpac Banking Corporation (ABN 33 007 457 141, AFSL 233714)
Westpac Institutional Bank is a division of Westpac Banking Corporation

Reply via email to