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. --- messagebus/abi-spec.json | 5 ++++- messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java | 10 ++++++++++ .../main/java/com/yahoo/messagebus/routing/RoutingNode.java | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'messagebus') diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json index baf2046e322..9c445aea6fc 100644 --- a/messagebus/abi-spec.json +++ b/messagebus/abi-spec.json @@ -174,7 +174,10 @@ ], "methods": [ "public void ()", - "public static java.lang.String getName(int)" + "public static java.lang.String getName(int)", + "public static boolean isFatal(int)", + "public static boolean isTransient(int)", + "public static boolean isMBusError(int)" ], "fields": [ "public static final int NONE", diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java b/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java index e54279e0541..7357f13ba15 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java @@ -122,4 +122,14 @@ public final class ErrorCode { default : return "UNKNOWN(" + error + ")"; } } + public static boolean isFatal(int code) { + return code >= FATAL_ERROR; + } + public static boolean isTransient(int code) { + return code >= TRANSIENT_ERROR; + } + public static boolean isMBusError(int code) { + return ((code < APP_TRANSIENT_ERROR) && isTransient(code)) + || ((code < APP_FATAL_ERROR) && isFatal(code)); + } } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java index e98a3820ff2..e28809c2928 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java @@ -244,7 +244,7 @@ public class RoutingNode implements ReplyHandler { policy.merge(routingContext); } catch (RuntimeException e) { setError(ErrorCode.POLICY_ERROR, - "Policy '" + dir.getName() + "' threw an exception; " + exceptionMessageWithTrace(e)); + "Policy '" + dir.getName() + "' threw an exception during merge; " + exceptionMessageWithTrace(e)); } if (reply == null) { setError(ErrorCode.APP_FATAL_ERROR, @@ -539,7 +539,7 @@ public class RoutingNode implements ReplyHandler { policy.select(routingContext); } catch (RuntimeException e) { setError(ErrorCode.POLICY_ERROR, - "Policy '" + dir.getName() + "' threw an exception; " + exceptionMessageWithTrace(e)); + "Policy '" + dir.getName() + "' threw an exception during select; " + exceptionMessageWithTrace(e)); return false; } if (children.isEmpty()) { -- cgit v1.2.3