Skip to content

Commit 2ec04ba

Browse files
author
Joerg Huber
committed
Fixed issue where delayed errors weren't handled correctly.
1 parent c452ad3 commit 2ec04ba

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

SIF3InfraREST/SIF3REST/src/main/java/sif3/infra/rest/queue/LocalMessageConsumer.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,16 @@ private void processResponse(ResponseInfo responseInfo)
369369
private void processError(ErrorInfo errorInfo)
370370
{
371371
logger.debug(consumerID + " has receive a DELAYED ERROR from its local consumer queue ID: " + errorInfo.getMessageQueueReaderID());
372-
DelayedConsumer delayedConsumer = (DelayedConsumer)minimalConsumer;
373-
delayedConsumer.onError(infraMapper.toErrorFromSIFErrorString(errorInfo.getPayload(), errorInfo.getMediaType(), new ErrorDetails(Status.INTERNAL_SERVER_ERROR.getStatusCode(), "Could not extract error from payload.", "Payload:\n"+errorInfo.getPayload())), extractDelayedReceiptInfo(errorInfo));
372+
DelayedConsumer delayedConsumer = (DelayedConsumer)minimalConsumer;
373+
374+
// If an error was returned then it is already unmarshalled and set in the errorInfo object. If it is null though
375+
// then we set a dummy value...
376+
ErrorDetails errorDetails = errorInfo.getErrorDetail();
377+
if (errorDetails == null) // create dummy error as it seems something is wrong
378+
{
379+
errorDetails = new ErrorDetails(Status.INTERNAL_SERVER_ERROR.getStatusCode(), "Could not extract error from payload.");
380+
}
381+
delayedConsumer.onError(errorDetails, extractDelayedReceiptInfo(errorInfo));
374382
}
375383

376384
/*

SIF3InfraREST/SIF3REST/src/main/java/sif3/infra/rest/queue/RemoteMessageQueueReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,10 @@ private void processError(Response response)
364364
//Populate ErrorInfo Object with base data.
365365
ErrorInfo errorInfo = new ErrorInfo();
366366
setResponseBaseData(errorInfo, response, MessageType.ERROR);
367-
367+
368+
// response already has the error type!
369+
errorInfo.setErrorDetail(response.getError());
370+
368371
// Is there a subscription for this Delayed ERROR type
369372
LocalConsumerQueue localQueue = getQueueInfo().getLocalConsumerQueue(errorInfo.getZone().getId(), errorInfo.getContext().getId(), errorInfo.getServiceName(), errorInfo.getServiceType().name());
370373

0 commit comments

Comments
 (0)