code: private void discoverGlobalFaultData_send(Set<Long> hsIds) {
          Set<Long> dests = Sets.filter(m_seeker.getSurvivors(), not(equalTo(m_hsId)));
  
          SiteFailureMessage.Builder msgBuilder = SiteFailureMessage.
                  builder()
                  .survivors(m_seeker.getSurvivors())
                  .failures(m_inTrouble.keySet())
                  .safeTxnIds(getSafeTxnIdsForSites(hsIds));
  
          SiteFailureMessage sfm = msgBuilder.build();
          sfm.m_sourceHSId = m_hsId;
  
          updateFailedSitesLedger(hsIds, sfm);
          m_seeker.add(sfm);
  
          m_mailbox.send(Longs.toArray(dests), sfm);
  
          m_recoveryLog.info("Agreement, Sending survivors " + sfm);
          if (m_recoveryLog.isDebugEnabled()) {
              m_recoveryLog.info(String.format("\n %s\n %s\n %s\n %s\n %s",
                                 m_seeker.dumpAlive(), m_seeker.dumpDead(),
                                 m_seeker.dumpReported(), m_seeker.dumpSurvivors(),
                                 dumpInTrouble()));
          }
      }
docs: Send one message to each surviving execution site providing this site's
  multi-partition commit point and this site's safe txnid
  (the receiver will filter the later for its
  own partition). Do this once for each failed initiator that we know about.
  Sends all data all the time to avoid a need for request/response.