private List<ServerLocation> findQueueServers(Set<ServerLocation> excludedServers, int count,
      boolean findDurable,
      boolean printErrorMessage, String msg) {
    List<ServerLocation> servers = null;
    Exception ex = null;
    try {
      if (pool.getPoolOrCacheCancelInProgress() != null) {
        return null;
      }
      servers = source.findServersForQueue(excludedServers, count, proxyId, findDurable);
    } catch (GemFireSecurityException e) {
      // propagate the security exception immediately.
      throw e;
    } catch (Exception e) {
      ex = e;
      if (logger.isDebugEnabled()) {
        logger.debug("SubscriptionManager - Error getting the list of servers: {}", e.getMessage());
      }
    }

    if (printErrorMessage) {
      if (servers == null || servers.isEmpty()) {
        logger.error(String.format(msg,
            excludedServers != null ? excludedServers.size() : 0,
            ex != null ? ex.getMessage() : "no exception"));
      }
    }
    return servers;
  }
Create a new primary server from a non-redundant server.

Add any failed servers to the excludedServers set.
geode-core/src/main/java/org/apache/geode/cache/client/internal/QueueManagerImpl.java