You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "Kevin Duling (JIRA)" <ji...@apache.org> on 2016/12/20 22:02:58 UTC
[jira] [Created] (GEODE-2236) Attempting to remove all
CacheListeners from a Region using gfsh throws NullPointerException
Kevin Duling created GEODE-2236:
-----------------------------------
Summary: Attempting to remove all CacheListeners from a Region using gfsh throws NullPointerException
Key: GEODE-2236
URL: https://issues.apache.org/jira/browse/GEODE-2236
Project: Geode
Issue Type: Bug
Components: gfsh
Reporter: Kevin Duling
The --cache-listener option to the alter region command replaces the existing CacheListeners with the ones set in the option.
What happens in RegionAlterFunction is that the existing CacheListeners not included in the new list are removed, then the new ones are added.
So, in theory, to remove all CacheListeners, an empty string could be passed into the --cache-listener option like:
{noformat}
alter region --name=data --cache-listener=''
Executing - alter region --name=data --cache-listener=""
Member | Status
------- | ----------------------------------------------------------------------
server2 | ERROR: java.lang.NullPointerException
at com.gemstone.gemfire.manag..
server1 | ERROR: java.lang.NullPointerException
at com.gemstone.gemfire.manag..
{noformat}
This actually works but it throws the NPE below.
{noformat}
[error 2016/09/13 09:48:59.943 PDT server1 <Function Execution Processor1> tid=0x40]
java.lang.NullPointerException
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.newInstance(RegionAlterFunction.java:320)
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.alterRegion(RegionAlterFunction.java:228)
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.execute(RegionAlterFunction.java:64)
at com.gemstone.gemfire.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:185)
at com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:386)
at com.gemstone.gemfire.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:457)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at com.gemstone.gemfire.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:692)
at com.gemstone.gemfire.distributed.internal.DistributionManager$9$1.run(DistributionManager.java:1149)
at java.lang.Thread.run(Thread.java:745)
{noformat}
A work-around to this issue is to set a non-existent CacheListener in the --cache-listener option like:
{noformat}
alter region --name=data --cache-listener=Fred
Executing - alter region --name=data --cache-listener=Fred
Member | Status
------- | ------------------------------------------------------------------
server1 | ERROR: Could not find class "Fred" specified for "cache-listener".
server2 | ERROR: Could not find class "Fred" specified for "cache-listener".
{noformat}
This correctly throws the ClassNotFoundException below and also removes all the existing CacheListeners.
{noformat}
[error 2016/09/13 09:46:40.537 PDT server1 <Function Execution Processor1> tid=0x40] Could not find class "Fred" specified for "cache-listener".
java.lang.RuntimeException: Could not find class "Fred" specified for "cache-listener".
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.forName(RegionAlterFunction.java:306)
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.alterRegion(RegionAlterFunction.java:227)
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.execute(RegionAlterFunction.java:64)
at com.gemstone.gemfire.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:185)
at com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:386)
at com.gemstone.gemfire.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:457)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at com.gemstone.gemfire.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:692)
at com.gemstone.gemfire.distributed.internal.DistributionManager$9$1.run(DistributionManager.java:1149)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: Fred
at com.gemstone.gemfire.internal.ClassPathLoader.forName(ClassPathLoader.java:422)
at com.gemstone.gemfire.management.internal.cli.functions.RegionAlterFunction.forName(RegionAlterFunction.java:303)
... 10 more
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)