You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "nabarun (JIRA)" <ji...@apache.org> on 2018/03/16 17:19:00 UTC

[jira] [Closed] (GEODE-4827) Cq should not be added to the cq map if cq's base region is null

     [ https://issues.apache.org/jira/browse/GEODE-4827?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

nabarun closed GEODE-4827.
--------------------------

> Cq should not be added to the cq map if cq's base region is null
> ----------------------------------------------------------------
>
>                 Key: GEODE-4827
>                 URL: https://issues.apache.org/jira/browse/GEODE-4827
>             Project: Geode
>          Issue Type: Bug
>          Components: cq
>            Reporter: nabarun
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.6.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently while registering a cq if the cache is closing down , it throws an exception. but we ignore the exception and continue adding the cq to the map.
> While processing the closing of cq it will ask for the cq's base region which will be null. Thus ends with NPE because we end up calling methods on null region.
> Solution:
> put the addition of the cq to the cqMap inside a if check for base region 
> {code:java}
>  void processRegisterCq(String serverCqName, ServerCQ ServerCQ, boolean addToCqMap,
>       GemFireCacheImpl cache) {
>     ServerCQ cq = (ServerCQ) ServerCQ;
>     try {
>       CqService cqService = cache.getCqService();
>       cqService.start();
>       cq.setCqService(cqService);
>       CqStateImpl cqState = (CqStateImpl) cq.getState();
>       cq.setName(generateCqName(serverCqName));
>       cq.registerCq(null, null, cqState.getState());
>     } catch (Exception ex) {
>       // Change it to Info level.
>       logger.info("Error while initializing the CQs with FilterProfile for CQ {}, Error : {}",
>           serverCqName, ex.getMessage(), ex);
>     }
>     if (logger.isDebugEnabled()) {
>       logger.debug("Adding CQ to remote members FilterProfile using name: {}", serverCqName);
>     }
>     // The region's FilterProfile is accessed through CQ reference as the
>     // region is not set on the FilterProfile created for the peer nodes.
>     if (cq.getCqBaseRegion() != null) {
>       if (addToCqMap) {
>         this.cqs.put(serverCqName, cq);
>       }
>       FilterProfile pf = cq.getCqBaseRegion().getFilterProfile();
>       if (pf != null) {
>         pf.incCqCount();
>       }
>     }
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)