aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo')
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java25
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/EventStream.java36
2 files changed, 15 insertions, 46 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java
index 88a1e6c1485..83ae349f5a0 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/EventRenderer.java
@@ -64,17 +64,7 @@ public class EventRenderer extends AsynchronousSectionedRenderer<Result> {
@Override
public void data(Data data) throws IOException {
- if (data instanceof EventStream.ErrorEvent error) {
- generator.writeRaw("event: error\n");
- generator.writeRaw("data: ");
- generator.writeStartObject();
- generator.writeStringField("source", error.source());
- generator.writeNumberField("error", error.code());
- generator.writeStringField("message", error.message());
- generator.writeEndObject();
- generator.writeRaw("\n\n");
- generator.flush();
- } else if (data instanceof EventStream.Event event) {
+ if (data instanceof EventStream.Event event) {
if (RENDER_EVENT_HEADER) {
generator.writeRaw("event: " + event.type() + "\n");
}
@@ -85,6 +75,19 @@ public class EventRenderer extends AsynchronousSectionedRenderer<Result> {
generator.writeRaw("\n\n");
generator.flush();
}
+ else if (data instanceof ErrorHit) {
+ for (ErrorMessage error : ((ErrorHit) data).errors()) {
+ generator.writeRaw("event: error\n");
+ generator.writeRaw("data: ");
+ generator.writeStartObject();
+ generator.writeStringField("source", error.getSource());
+ generator.writeNumberField("error", error.getCode());
+ generator.writeStringField("message", error.getMessage());
+ generator.writeEndObject();
+ generator.writeRaw("\n\n");
+ generator.flush();
+ }
+ }
// Todo: support other types of data such as search results (hits), timing and trace
}
diff --git a/container-search/src/main/java/com/yahoo/search/result/EventStream.java b/container-search/src/main/java/com/yahoo/search/result/EventStream.java
index 8e6f7977d55..b393a91e6d0 100644
--- a/container-search/src/main/java/com/yahoo/search/result/EventStream.java
+++ b/container-search/src/main/java/com/yahoo/search/result/EventStream.java
@@ -41,7 +41,7 @@ public class EventStream extends Hit implements DataList<Data> {
}
public void error(String source, ErrorMessage message) {
- incoming().add(new ErrorEvent(eventCount.incrementAndGet(), source, message));
+ incoming().add(new DefaultErrorHit(source, message));
}
public void markComplete() {
@@ -117,38 +117,4 @@ public class EventStream extends Hit implements DataList<Data> {
}
- public static class ErrorEvent extends Event {
-
- private final String source;
- private final ErrorMessage message;
-
- public ErrorEvent(int eventNumber, String source, ErrorMessage message) {
- super(eventNumber, message.getMessage(), "error");
- this.source = source;
- this.message = message;
- }
-
- public String source() {
- return source;
- }
-
- public int code() {
- return message.getCode();
- }
-
- public String message() {
- return message.getMessage();
- }
-
- @Override
- public Hit asHit() {
- Hit hit = super.asHit();
- hit.setField("source", source);
- hit.setField("code", message.getCode());
- return hit;
- }
-
-
- }
-
}