@Override
  public void uncleanShutdown(String reason, final Exception e) {
    inhibitForcedDisconnectLogging(false);

    try {
      if (services.getShutdownCause() == null) {
        services.setShutdownCause(e);
      }

      if (cleanupTimer != null && !cleanupTimer.isShutdown()) {
        cleanupTimer.shutdownNow();
      }

      lifecycleListener.disconnect(e);

      // first shut down communication so we don't do any more harm to other
      // members
      services.emergencyClose();
    } finally {
      if (e != null) {
        try {
          listener.membershipFailure(reason, e);
        } catch (RuntimeException re) {
          logger.warn("Exception caught while shutting down", re);
        }
      }
    }
  }
in order to avoid split-brain occurring when a member is shutting down due to race conditions
in view management we add it as a shutdown member when we receive a shutdown message. This is
not the same as a SHUNNED member.
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java