[ https://issues.apache.org/jira/browse/GEODE-6630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16850089#comment-16850089 ]
ASF subversion and git services commented on GEODE-6630: -------------------------------------------------------- Commit 7d7f8f18d352b66a51ac735843213046b6b1cb26 in geode's branch refs/heads/develop from pivotal-eshu [ https://gitbox.apache.org/repos/asf?p=geode.git;h=7d7f8f1 ] GEODE-6630: move allBucketsRecoveredFromDisk count down latch (#3477) * Rename RedundancyLogger to PersistentBucketRecoverer * Move allBucketsRecoveredFromDisk count down latch from PRHARedundancyProvider to PersistentBucketRecoverer. * Provide utility methods for using the count down latch. > 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.9.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)