+1 to eliminate npe

--
Mike Stolz
Principal Engineer, GemFire Product Manager
Mobile: 631-835-4771

On Tue, Jan 10, 2017 at 11:42 AM, Kevin Duling (JIRA) <j...@apache.org>
wrote:

>
>     [ https://issues.apache.org/jira/browse/GEODE-2236?page=
> com.atlassian.jira.plugin.system.issuetabpanels:comment-
> tabpanel&focusedCommentId=15815457#comment-15815457 ]
>
> Kevin Duling commented on GEODE-2236:
> -------------------------------------
>
> One more reviewer has to give it a +1 before the PR can be accepted.
>
> > 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
> >            Assignee: Deepak Dixit
> >
> > 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)
>

Reply via email to