public void processAnyCallbacksFromFailedHosts(Set<Integer> failedHosts) {
        synchronized(m_allHostCallbackLock) {
            failedHosts.stream()
                .forEach(i -> {
                    if (m_outstandingAllHostProcedureHostIds.contains(i)) {
                        ClientResponseImpl cri = new ClientResponseImpl(
                                ClientResponse.CONNECTION_LOST,
                                new VoltTable[0],
                                "Host " + i + " failed, connection lost");
                        // embed the hostid as a string in app status string
                        // because the recipient expects this hack
                        cri.setAppStatusString(String.valueOf(i));

                        allHostNTProcedureCallback(cri);
                    }
                });
        }
    }
public void processAnyCallbacksFromFailedHosts ( Set < Integer > failedHosts ) { synchronized ( m_allHostCallbackLock ) { failedHosts . stream ( ) . forEach ( i -> { if ( m_outstandingAllHostProcedureHostIds . contains ( i ) ) { ClientResponseImpl cri = new ClientResponseImpl ( ClientResponse . CONNECTION_LOST , new VoltTable [ 0 ] , "Host " + i + " failed, connection lost" ) ; cri . setAppStatusString ( String . valueOf ( i ) ) ; allHostNTProcedureCallback ( cri ) ; } } ) ; } }
For all-host NT procedures, use site failures to call callbacks for hosts
that will obviously never respond.

ICH and the other plumbing should handle regular, txn procs.