From 79cde9a3bab5dddd5c806f501b92e30b14840f00 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sun, 28 Apr 2019 16:40:58 +0200 Subject: Report fatal-mbus-errors-as server error. --- .../com/yahoo/document/restapi/OperationHandlerImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'vespaclient-container-plugin/src') diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java index b9bbe4f792e..cf22d25b510 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java @@ -21,12 +21,12 @@ import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol; import com.yahoo.documentapi.metrics.DocumentApiMetrics; import com.yahoo.documentapi.metrics.DocumentOperationStatus; import com.yahoo.documentapi.metrics.DocumentOperationType; +import com.yahoo.messagebus.ErrorCode; import com.yahoo.messagebus.StaticThrottlePolicy; import com.yahoo.metrics.simple.MetricReceiver; import com.yahoo.vdslib.VisitorOrdering; import com.yahoo.vespaclient.ClusterDef; import com.yahoo.vespaxmlparser.FeedOperation; -import com.yahoo.vespaxmlparser.VespaXMLFeedReader; import com.yahoo.yolean.concurrent.ConcurrentResourcePool; import com.yahoo.yolean.concurrent.ResourceFactory; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -108,10 +108,19 @@ public class OperationHandlerImpl implements OperationHandler { documentAccess.shutdown(); } + private static final int HTTP_STATUS_SERVER_ERROR = 500; private static final int HTTP_STATUS_BAD_REQUEST = 400; private static final int HTTP_STATUS_INSUFFICIENT_STORAGE = 507; private static final int HTTP_PRE_CONDIDTION_FAILED = 412; + private static boolean isFatalMBusErrorCode(Set errorCodes) { + for (Integer e : errorCodes) { + if (ErrorCode.isFatal(e) && ErrorCode.isMBusError(e)) { + return true; + } + } + return false; + } public static int getHTTPStatusCode(Set errorCodes) { if (errorCodes.size() == 1 && errorCodes.contains(DocumentProtocol.ERROR_NO_SPACE)) { return HTTP_STATUS_INSUFFICIENT_STORAGE; @@ -119,6 +128,9 @@ public class OperationHandlerImpl implements OperationHandler { if (errorCodes.contains(DocumentProtocol.ERROR_TEST_AND_SET_CONDITION_FAILED)) { return HTTP_PRE_CONDIDTION_FAILED; } + if (isFatalMBusErrorCode(errorCodes)) { + return HTTP_STATUS_SERVER_ERROR; + } return HTTP_STATUS_BAD_REQUEST; } -- cgit v1.2.3