private boolean requestFilterInfo(final InternalDistributedMember recipient) {
    // Request for Filter Information before getting the HARegion snapshot.
    final DistributionManager dm = region.getDistributionManager();
    final RequestFilterInfoMessage filterInfoMsg = new RequestFilterInfoMessage();
    filterInfoMsg.regionPath = region.getFullPath();
    filterInfoMsg.setRecipient(recipient);
    final FilterInfoProcessor processor = new FilterInfoProcessor(region.getSystem(), recipient);
    filterInfoMsg.processorId = processor.getProcessorId();
    dm.putOutgoing(filterInfoMsg);

    try {
      processor.waitForRepliesUninterruptibly();
      return processor.filtersReceived;
    } catch (InternalGemFireException ex) {
      final Throwable cause = ex.getCause();
      if (cause instanceof org.apache.geode.cache.TimeoutException) {
        throw (org.apache.geode.cache.TimeoutException) cause;
      }
      throw ex;
    } catch (ReplyException e) {
      if (!region.isDestroyed()) {
        e.handleCause();
      }
    }
    return false;
  }
transfer interest/cq registrations from the image provider to this VM

@return whether the operation succeeded in transferring anything
geode-core/src/main/java/org/apache/geode/internal/cache/InitialImageOperation.java