xiaojian zhou created GEODE-6630:
------------------------------------
Summary: RedundancyLogger might throw NPE
Key: GEODE-6630
URL: https://issues.apache.org/jira/browse/GEODE-6630
Project: Geode
Issue Type: Bug
Reporter: xiaojian zhou
{noformat}
I noticed in some tests with following error logged in debug level:
[debug 2019/04/10 11:25:52.904 PDT <RedundancyLogger for region TestRegion>
tid=0x55] Unexpected exception in PR redundancy recovery
java.lang.NullPointerException
at
org.apache.geode.internal.cache.partitioned.RedundancyLogger.run2(RedundancyLogger.java:154)
at
org.apache.geode.internal.cache.partitioned.RecoveryRunnable.run(RecoveryRunnable.java:59)
at java.lang.Thread.run(Thread.java:748)
Then I looked at the code that it's using:
(this.allBucketsRecoveredFromDisk.getCount() > 0) in more than one places.
The allBucketsRecoveredFromDisk is referecing to the object in
PRHARedundancyProvider.
But in PRHARedundancyProvider, it is using:
public boolean isPersistentRecoveryComplete() {
if (!ColocationHelper.checkMembersColocation(this.prRegion,
this.prRegion.getMyId())) {
return false;
}
if (allBucketsRecoveredFromDisk != null &&
allBucketsRecoveredFromDisk.getCount() > 0) {
return false;
}
So allBucketsRecoveredFromDisk could be null. We should alway use
"(allBucketsRecoveredFromDisk != null && allBucketsRecoveredFromDisk.getCount()
> 0) " instead of "(this.allBucketsRecoveredFromDisk.getCount() > 0)"
{noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)