public InternalDistributedMember getNodeForBucketRead(int bucketId) {
    // Wait until there is storage
    InternalDistributedMember primary = waitForNoStorageOrPrimary(bucketId, "read");
    if (primary == null) {
      return null;
    }
    if (isTX()) {
      return getNodeForBucketWrite(bucketId, null);
    }
    return getRegionAdvisor().getPreferredNode(bucketId);
  }
Gets the Node for reading a specific bucketId. This method gives priority to local node to
speed up operation and avoid remote calls.

@param bucketId identifier for bucket

@return the primary member's id or null if there is no storage
geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java