@Override
    public void quorumLost(Collection<ID> failures, GMSMembershipView<ID> view) {
      // notify of quorum loss if split-brain detection is enabled (meaning we'll shut down) or
      // if the loss is more than one member

      boolean notify = failures.size() > 1;
      if (!notify) {
        notify = services.getConfig().isNetworkPartitionDetectionEnabled();
      }

      if (notify) {
        List<ID> remaining =
            gmsMemberListToIDList(view.getMembers());
        remaining.removeAll(failures);

        if (inhibitForceDisconnectLogging) {
          if (logger.isDebugEnabled()) {
            logger
                .debug("<ExpectedException action=add>Possible loss of quorum</ExpectedException>");
          }
        }
        logger.fatal("Possible loss of quorum due to the loss of {} cache processes: {}",
            failures.size(), failures);
        if (inhibitForceDisconnectLogging) {
          if (logger.isDebugEnabled()) {
            logger.debug(
                "<ExpectedException action=remove>Possible loss of quorum</ExpectedException>");
          }
        }


        try {
          listener.quorumLost(
              gmsMemberCollectionToIDSet(failures),
              remaining);
        } catch (Exception e) {
          logger.info("Quorum-loss listener threw an exception", e);
        }
      }
    }
this is invoked by JoinLeave when there is a loss of quorum in the membership system
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java