[ https://issues.apache.org/jira/browse/GEODE-6630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Shu resolved GEODE-6630. ----------------------------- Resolution: Fixed Fix Version/s: 1.10.0 > RedundancyLogger might throw NPE > -------------------------------- > > Key: GEODE-6630 > URL: https://issues.apache.org/jira/browse/GEODE-6630 > Project: Geode > Issue Type: Bug > Affects Versions: 1.9.0 > Reporter: xiaojian zhou > Assignee: Eric Shu > Priority: Major > Labels: SmallFeature > Fix For: 1.10.0 > > Time Spent: 1.5h > Remaining Estimate: 0h > > {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)