public static VersionedObjectList execute(ExecutablePool pool, Region region, List keys,
      int retryAttempts, Object callback) {
    AbstractOp op = new GetAllOpImpl(region.getFullPath(), keys, callback);
    ClientMetadataService cms = ((InternalRegion) region).getCache().getClientMetadataService();

    Map<ServerLocation, Set> serverToFilterMap = cms.getServerToFilterMap(keys, region, true);

    if (serverToFilterMap == null || serverToFilterMap.isEmpty()) {
      op.initMessagePart();
      return ((VersionedObjectList) pool.execute(op)).setKeys(keys);
    } else {
      VersionedObjectList result = null;
      ServerConnectivityException se = null;
      List retryList = new ArrayList();
      try {
        List callableTasks =
            constructGetAllTasks(region.getFullPath(), serverToFilterMap, (PoolImpl) pool,
                callback);
        Map<ServerLocation, Object> results =
            SingleHopClientExecutor.submitGetAll(serverToFilterMap,
                callableTasks, cms, (LocalRegion) region);
        for (ServerLocation server : results.keySet()) {
          Object serverResult = results.get(server);
          if (serverResult instanceof ServerConnectivityException) {
            se = (ServerConnectivityException) serverResult;
            retryList.addAll(serverToFilterMap.get(server));
          } else {
            if (result == null) {
              result = (VersionedObjectList) serverResult;
            } else {
              result.addAll((VersionedObjectList) serverResult);
            }
          }
        }
      } catch (ServerOperationException serverOperationException) {
        if (!(serverOperationException.getCause() instanceof SerializationException)) {
          throw serverOperationException;
        }
        se = serverOperationException;
        retryList = keys;
      }

      if (se != null) {
        if (retryAttempts == 0) {
          throw se;
        } else {
          VersionedObjectList retryResult =
              GetAllOp.execute(pool, region.getFullPath(), retryList, callback);
          if (result == null) {
            result = retryResult;
          } else {
            result.addAll(retryResult);
          }
        }
      }

      return result;
    }
  }
Does a region getAll on a server using connections from the given pool to communicate with the
server.

@param pool the pool to use to communicate with the server.
@param region the name of the region to do the getAll on
@param keys list of keys to get
@return the map of values found by the getAll if any
geode-core/src/main/java/org/apache/geode/cache/client/internal/GetAllOp.java