Dan Smith created GEODE-920:
-------------------------------
Summary: NullPointerException from
InitialImageOperation.registerFilters during shutdown
Key: GEODE-920
URL: https://issues.apache.org/jira/browse/GEODE-920
Project: Geode
Issue Type: Bug
Reporter: Dan Smith
We hit this in some internal testing. We see a NPE in the logs while the cache
server is shutting down.
With revision 7a77f805692f14b2f9760899be30bd831d8186ab
{noformat}
[info 2016/02/03 12:34:27.282 PST bridgegemfire1_w1-gst-dev23_31152 <Handshaker
0.0.0.0/0.0.0.0:27538 Thread 2> tid=0x99]
_gfe_non_durable_client_with_id_w1-gst-dev23(edgegemfire2_w1-gst-
dev23_30022:30022:loner)<ec>:59927:f73bd5a8:edgegemfire2_w1-gst-dev23_30022_2_queue
failed to get image from
w1-gst-dev23(bridgegemfire2_w1-gst-dev23_28768:28768)<ec><v14>:1028
---Shutdown is in progress
[info 2016/02/03 12:34:27.283 PST bridgegemfire1_w1-gst-dev23_31152
<Distributed system shutdown hook> tid=0xf] Cache server on port 27,538 is
shutting down.
[info 2016/02/03 12:34:27.291 PST bridgegemfire1_w1-gst-dev23_31152 <Pooled
High Priority Message Processor 6> tid=0x72] Unable to obtain the client proxy.
Failed to register Filters during HARegion GII. Region
:_gfe_non_durable_client_with_id_w1-gst-dev23(edgegemfire2_w1-gst-dev23_30022:30022:loner)<ec>:59927:f73bd5a8:edgegemfire2_w1-gst-dev23_30022_2_queue,
null
java.lang.NullPointerException
at
com.gemstone.gemfire.internal.cache.InitialImageOperation$FilterInfoMessage.registerFilters(InitialImageOperation.java:3737)
at
com.gemstone.gemfire.internal.cache.InitialImageOperation$FilterInfoProcessor.process(InitialImageOperation.java:2201)
at
com.gemstone.gemfire.distributed.internal.ReplyMessage.process(ReplyMessage.java:231)
at
com.gemstone.gemfire.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:212)
at
com.gemstone.gemfire.distributed.internal.ReplyMessage.process(ReplyMessage.java:201)
at
com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:380)
at
com.gemstone.gemfire.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:451)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
com.gemstone.gemfire.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:656)
at
com.gemstone.gemfire.distributed.internal.DistributionManager$5$1.run(DistributionManager.java:967)
at java.lang.Thread.run(Thread.java:745)
{noformat}
Looking at the code, it looks like it's coming from this line:
{code}
proxy = ((HAContainerWrapper)ccn.getHaContainer()).getProxy(
region.getName());
{code}
It looks like the singleton CacheClientNotifier is actually set to null when
the system shuts down, which is probably the cause of this NPE. getHAContainer
should never return null, so it's not that.
In CacheClientNotifier.shutdown:
{code}
if (noActiveServer() && ccnSingleton != null){
ccnSingleton = null;
{code}
Singletons are bad, m'kay. CacheClientNotifier should be a field on cache
rather than a static singleton, and should not get nulled out.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)