@Override
  public void start() {
    try {
      membership.start();
    } catch (ConnectionException e) {
      throw new DistributionException(
          "Unable to create membership manager",
          e);
    } catch (SecurityException e) {
      String failReason = e.getMessage();
      if (failReason.contains("Failed to find credentials")) {
        throw new AuthenticationRequiredException(failReason);
      }
      throw new GemFireSecurityException(e.getMessage(),
          e);
    } catch (MembershipConfigurationException e) {
      throw new GemFireConfigException("Problem configuring membership services", e);
    } catch (MemberStartupException e) {
      throw new SystemConnectException("Problem starting up membership services", e);
    } catch (RuntimeException e) {
      logger.error("Unexpected problem starting up membership services", e);
      throw new SystemConnectException("Problem starting up membership services: " + e.getMessage()
          + ".  Consult log file for more details");
    }
  }
thread-local used to force use of Messenger for communications, usually to avoid deadlock when
conserve-sockets=true. Use of this should be removed when connection pools are implemented in
the direct-channel
geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionImpl.java