[ 
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)

Reply via email to