----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/50361/ -----------------------------------------------------------
Review request for geode, anilkumar gingade, Barry Oglesby, Jason Huynh, William Markito, nabarun nag, Dan Smith, and xiaojian zhou. Repository: geode Description ------- GEODE-1687: NPE during CqStatusListener method invocation. NPE in: CqServiceImpl.java -> invokeCqsConnected() Line#2011 Pool cqPool = cQuery.getCQProxy().getPool(); When a connection relating to CQ is established or dropped, CqStatusListner is invoked to indicate connection/subscription status. This allows application to handle if all the subscription connection is lost for CQs. Looking at the code path for CqStatusListener there is a chance of NPE getting thrown in CqServiceImpl.invokeCqsConnected when CQ is executed using the Bridge loader interface (old way of client-server connection).... When a pool or bridge-loader connection is made or dropped, the code gets all the CQs; checks if the CQ is registered using that connection/pool name and invokes the CqStatusListner... The code to check if CQ is using the corresponding pool: Pool cqPool = cQuery.getCQProxy().getPool(); If the CQ is getting executed using Bridge loader, the CqProxy for CQ is not set when its constructed; its set when it gets executed....During this time the call to cQuery.getCQProxy() could throw NPE. Diffs ----- geode-cq/src/main/java/com/gemstone/gemfire/cache/query/internal/cq/CqServiceImpl.java e1e158c Diff: https://reviews.apache.org/r/50361/diff/ Testing ------- Thanks, anilkumar gingade