summaryrefslogtreecommitdiffstats
path: root/vespaclient-core
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-02-03 10:47:53 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2018-02-03 10:47:53 +0100
commit039ae6fbba7556ba0e8128faa74260056c078869 (patch)
tree9656504e0172fc6786929bc1e9788160039f3231 /vespaclient-core
parentdb04b94cb72b730e437a6ed8968e09adfb0c68e1 (diff)
Try to differentiate between client and server errors.
Diffstat (limited to 'vespaclient-core')
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java21
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java3
2 files changed, 22 insertions, 2 deletions
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
index c235fdfce72..7f65179de2d 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
@@ -11,6 +11,7 @@ import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentMessage;
import com.yahoo.feedapi.SharedSender;
import com.yahoo.log.LogLevel;
import com.yahoo.messagebus.Error;
+import com.yahoo.messagebus.ErrorCode;
import com.yahoo.messagebus.Message;
import com.yahoo.messagebus.Reply;
import com.yahoo.search.result.ErrorMessage;
@@ -122,7 +123,7 @@ public final class FeedResponse extends HttpResponse implements SharedSender.Res
String str = out.toString();
log.finest(str);
- addError(str);
+ addError(convertErrorCode(err.getCode()), str);
}
if (abortOnError) {
isAborted = true;
@@ -149,6 +150,11 @@ public final class FeedResponse extends HttpResponse implements SharedSender.Res
errors.add(error);
return this;
}
+ public FeedResponse addError(com.yahoo.container.protect.Error code, String error) {
+ errorMessages.add(new ErrorMessage(code.code, error));
+ errors.add(error);
+ return this;
+ }
public List<String> getErrorList() {
return errors;
@@ -162,6 +168,19 @@ public final class FeedResponse extends HttpResponse implements SharedSender.Res
return errors.anyMatch(e -> e.getCode() != DocumentProtocol.ERROR_TEST_AND_SET_CONDITION_FAILED);
}
+ private static com.yahoo.container.protect.Error convertErrorCode(int error) {
+ // We should try to enumerate these error a bit finer.
+ // Like busy, no space etc.
+ if (error == DocumentProtocol.ERROR_NO_SPACE) {
+ return com.yahoo.container.protect.Error.INSUFFICIENT_STORAGE;
+ } else if (error >= ErrorCode.TRANSIENT_ERROR && (error < ErrorCode.FATAL_ERROR)) {
+ return com.yahoo.container.protect.Error.INTERNAL_SERVER_ERROR;
+ } if (error >= ErrorCode.FATAL_ERROR && (error < ErrorCode.ERROR_LIMIT)) {
+ return com.yahoo.container.protect.Error.INTERNAL_SERVER_ERROR;
+ }
+ return com.yahoo.container.protect.Error.INTERNAL_SERVER_ERROR;
+ }
+
public boolean isSuccess() {
return errors.isEmpty();
}
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
index 4b7d913c0f4..8180bfd84ea 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
@@ -8,6 +8,7 @@ import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.EmptyResponse;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.protect.Error;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedapi.DocprocMessageProcessor;
import com.yahoo.feedapi.FeedContext;
@@ -106,7 +107,7 @@ public final class VespaFeedHandler extends VespaFeedHandlerBase {
long millis = getTimeoutMillis(request);
boolean completed = sender.waitForPending(millis);
if (!completed) {
- response.addError("Timed out after " + millis + " ms waiting for responses");
+ response.addError(Error.TIMEOUT, "Timed out after " + millis + " ms waiting for responses");
}
response.done();
return response;