@Override public void processRemoteWorkResponse(FragmentResponseMessage response) { // if we've already decided that we're rolling back, then we just // want to discard any incoming FragmentResponses that were // possibly in flight if (m_needsRollback) { return; } if (response.getStatusCode() != FragmentResponseMessage.SUCCESS) { if (m_missingDependencies != null) m_missingDependencies.clear(); m_readyWorkUnits.clear(); if (m_isCoordinator) { // throw an exception which will back the runtime all the way // to the stored procedure invocation call, triggering undo // at that point if (response.getException() != null) { throw response.getException(); } else { throw new FragmentFailureException(); } } else { m_needsRollback = true; m_done = true; } } processFragmentResponseDependencies(response); }
public static void logInitiatorRxMsg(VoltMessage msg, long localHSId) { if (iv2log.isTraceEnabled()) { if (msg instanceof InitiateResponseMessage) { InitiateResponseMessage iresp = (InitiateResponseMessage) msg; String logmsg = "rxInitRsp %s from %s ciHandle %s txnId %s spHandle %s status %s"; iv2log.trace( String.format( logmsg, CoreUtils.hsIdToString(localHSId), CoreUtils.hsIdToString(iresp.m_sourceHSId), ClientInterfaceHandleManager.handleToString(iresp.getClientInterfaceHandle()), txnIdToString(iresp.getTxnId()), txnIdToString(iresp.getSpHandle()), respStatusToString(iresp.getClientResponseData().getStatus()))); } else if (msg instanceof FragmentResponseMessage) { FragmentResponseMessage fresp = (FragmentResponseMessage) msg; String logmsg = "rxFragRsp %s from %s txnId %s spHandle %s status %s"; iv2log.trace( String.format( logmsg, CoreUtils.hsIdToString(localHSId), CoreUtils.hsIdToString(fresp.m_sourceHSId), txnIdToString(fresp.getTxnId()), txnIdToString(fresp.getSpHandle()), fragStatusToString(fresp.getStatusCode()))); } } }
void processFragmentWork( FragmentTaskMessage ftask, HashMap<Integer, List<VoltTable>> dependencies) { assert (ftask.getFragmentCount() > 0); FragmentResponseMessage response = m_site.processFragmentTask(this, dependencies, ftask); if (response.getStatusCode() != FragmentResponseMessage.SUCCESS) { if (m_missingDependencies != null) m_missingDependencies.clear(); m_readyWorkUnits.clear(); if (m_isCoordinator) { // throw an exception which will back the runtime all the way // to the stored procedure invocation call, triggering undo // at that point if (response.getException() != null) { throw response.getException(); } else { throw new FragmentFailureException(); } } else { m_needsRollback = true; m_done = true; } } if (m_isCoordinator && (response.getDestinationSiteId() == response.getExecutorSiteId())) { processFragmentResponseDependencies(response); } else { m_mbox.send(response.getDestinationSiteId(), response); // If we're not the coordinator, the transaction is read-only, // and this was the final task, then we can try to move on after // we've finished this work. if (!isCoordinator() && isReadOnly() && ftask.isFinalTask()) { m_done = true; } } }