PRHARedundancyProvider { void waitForPersistentBucketRecovery() { if (getPersistentBucketRecoverer() != null) { getPersistentBucketRecoverer().await(); } } PRHARedundancyProvider(PartitionedRegion partitionedRegion,
      InternalResourceManager resourceManager); @VisibleForTesting  PRHARedundancyProvider(PartitionedRegion partitionedRegion,
      InternalResourceManager resourceManager,
      BiFunction<PRHARedundancyProvider, Integer, PersistentBucketRecoverer> persistentBucketRecovererFunction); @VisibleForTesting  PRHARedundancyProvider(PartitionedRegion partitionedRegion,
      InternalResourceManager resourceManager,
      BiFunction<PRHARedundancyProvider, Integer, PersistentBucketRecoverer> persistentBucketRecovererFunction,
      PartitionedRegionRebalanceOpFactory rebalanceOpFactory,
      CompletableFuture<Void> providerStartupTask); static void timedOut(PartitionedRegion partitionedRegion,
      Set<InternalDistributedMember> allStores,
      Collection<InternalDistributedMember> alreadyUsed, String opString, long timeOut); PartitionedRegion getPartitionedRegion(); InternalDistributedMember createBucketAtomically(int bucketId, int newBucketSize,
      boolean finishIncompleteCreation, String partitionName); void endBucketCreationLocally(int bucketId, InternalDistributedMember newPrimary); void finishIncompleteBucketCreation(int bucketId); boolean createBackupBucketOnMember(int bucketId, InternalDistributedMember targetMember,
      boolean isRebalance, boolean replaceOfflineData, InternalDistributedMember fromMember,
      boolean forceCreation); boolean isRedundancyImpaired(); void shutdown(); InternalPRInfo buildPartitionedRegionInfo(boolean internal, LoadProbe loadProbe); OfflineMemberDetailsImpl fetchOfflineMembers(); InternalPartitionDetails buildPartitionMemberDetails(boolean internal,
      LoadProbe loadProbe); boolean isPersistentRecoveryComplete(); static final String TIMEOUT_MSG; static final String INSUFFICIENT_STORES_MSG; }
@Test public void waitForPersistentBucketRecoveryProceedsWhenPersistentBucketRecovererLatchIsNotSet() { prHaRedundancyProvider = new PRHARedundancyProvider(partitionedRegion, resourceManager, (a, b) -> mock(PersistentBucketRecoverer.class)); prHaRedundancyProvider.waitForPersistentBucketRecovery(); }