@Override public void receiveError(DispatchErrorEvent errorEvent) { logger.error("Error received in dispatch stack on owningProcess:" + errorEvent.getOwningProcess() + ", msg:" + errorEvent.getMessage(), errorEvent.getCause()); if (errorEvent.getIndex().length == 0) sendCachePurge(errorEvent.getOwningProcess()); }
@Override public DispatchErrorEvent pushOwningProcess(String localProcessName) throws ProcessIdentifierException { return new DispatchErrorEvent(pushOwner(localProcessName), index, context, message, cause, failureType, failedActivity); }
@Override public DispatchErrorEvent popOwningProcess() throws ProcessIdentifierException { return new DispatchErrorEvent(popOwner(), index, context, message, cause, failureType, failedActivity); }
/** * Create an {@link ErrorProvenanceItem} and send across to the * {@link ProvenanceConnector} */ @Override public void receiveError(DispatchErrorEvent errorEvent) { IterationProvenanceItem iterationProvItem = getIterationProvItem(errorEvent); // get using errorEvent.getOwningProcess(); ErrorProvenanceItem errorItem = new ErrorProvenanceItem(); errorItem.setCause(errorEvent .getCause()); errorItem.setErrorType(errorEvent .getFailureType().toString()); errorItem.setMessage(errorEvent.getMessage()); errorItem.setProcessId(errorEvent.getOwningProcess()); errorItem.setIdentifier(uuid()); errorItem.setParentId(iterationProvItem.getIdentifier()); // iterationProvItem.setErrorItem(errorItem); // FIXME don't need to add to the processor item earlier getReporter().addProvenanceItem(errorItem); super.receiveError(errorEvent); }
@Override public void receiveError(DispatchErrorEvent errorEvent) { StateModel model; String owningProcess = errorEvent.getOwningProcess(); synchronized(stateMap) { model = stateMap.get(owningProcess); } if (model == null) { logger.warn("Error received for unknown owning process: " + owningProcess); return; } model.finishWith(errorEvent.getIndex()); getAbove().receiveError(errorEvent); }
/** * Always send the error document job result on receiving a failure, at * least for now! This should be configurable, in effect this is the part * that ensures the processor never sees a top level failure. */ @Override public void receiveError(DispatchErrorEvent errorEvent) { getState(errorEvent.getOwningProcess()).incrementErrorsTranslated(); sendErrorOutput(errorEvent, errorEvent.getCause(), null); }
@Override public void fail(String message, Throwable t, DispatchErrorType errorType) { logger.warn("Failed (" + errorType + ") invoking condition service " + jobIdentifier + ":" + message, t); AbstractDispatchEvent originalEvent; synchronized (incomingJobs) { originalEvent = incomingJobs.get(jobIdentifier); } receiveError(new DispatchErrorEvent(originalEvent .getOwningProcess(), originalEvent.getIndex(), originalEvent.getContext(), "Can't invoke condition service ", t, DispatchErrorType.INVOCATION, null)); }
+ op.getName() + "'"; if (event instanceof DispatchErrorEvent) message += ": " + ((DispatchErrorEvent) event).getMessage(); ErrorDocument ed; if (cause != null)
/** * If an error occurs we can either handle the error or send it to the layer * above for further processing. */ @Override public void receiveError(DispatchErrorEvent errorEvent) { String owningProcess = errorEvent.getOwningProcess(); for (JobState rs : getJobsCopy(owningProcess)) if (identicalIndex(rs.jobEvent.getIndex(), errorEvent.getIndex())) { boolean handled = rs.handleError(); if (!handled) { removeJob(owningProcess, rs); getAbove().receiveError(errorEvent); return; } } }
@Override public void fail(String message, Throwable t, DispatchErrorType errorType) { logger.warn("Failed (" + errorType + ") invoking " + activity + " for job " + jobEvent + ": " + message, t); monMan.deregisterNode( invocationProcessIdentifier); getAbove().receiveError( new DispatchErrorEvent(jobEvent.getOwningProcess(), jobEvent.getIndex(), jobEvent.getContext(), message, t, errorType, activity)); }
private void checkCondition(AbstractDispatchEvent event) { Activity<?> condition = getCondition(); if (condition == null) { super.receiveError(new DispatchErrorEvent(event.getOwningProcess(), event.getIndex(), event.getContext(), "Can't invoke condition service: null", null, DispatchErrorType.INVOCATION, condition)); return; } if (!(condition instanceof AbstractAsynchronousActivity)) { DispatchErrorEvent errorEvent = new DispatchErrorEvent( event.getOwningProcess(), event.getIndex(), event.getContext(), "Can't invoke condition service " + condition + " is not an instance of AbstractAsynchronousActivity", null, DispatchErrorType.INVOCATION, condition); super.receiveError(errorEvent); return; } AbstractAsynchronousActivity asyncCondition = (AbstractAsynchronousActivity) condition; String jobIdentifier = jobIdentifier(event); Map<String, T2Reference> inputs = prepareInputs(asyncCondition, jobIdentifier); AsynchronousActivityCallback callback = new ConditionCallBack( jobIdentifier); asyncCondition.executeAsynch(inputs, callback); }