public Set adviseProfileExchange() {
    // Get the list of recipients from the nearest initialized advisor
    // in the parent chain
    Assert.assertTrue(!isInitialized());
    DistributionAdvisor advisor;
    DistributionAdvisee advisee = getAdvisee();
    do {
      advisee = advisee.getParentAdvisee();
      if (advisee == null) {
        return getDefaultDistributionMembers();
      }
      advisor = advisee.getDistributionAdvisor();
    } while (!advisor.isInitialized());
    // do not call adviseGeneric because we don't want to trigger another
    // profile exchange on the parent
    return advisor.adviseFilter(null);
  }
Provide recipients for profile exchange, called by UpdateAttributesProcessor and
CreateRegionProcessor. Can not be initialized at this point because it is only called in the
following scenarios:

<pre>
1) We're doing a lazy initialization and synchronization on initializeLock prevents other
threads from causing initialization on this advisor.

2) We're creating a new region and doing profile exchange as part of region initialization, in
which case no other threads have access to the region or this advisor.
</pre>
geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java