summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-06-18 11:52:38 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-06-18 11:52:38 +0000
commit94becba734cdd2d3725bf33eb259e2e0bc0564b5 (patch)
treee726858942f333ef6caa101550f642dda47b4b44 /vespaclient-container-plugin
parentf7ecc8fe21b15a2c9da17eb96a7bd6375b2b6043 (diff)
Add a todo about diabling debug mode.
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java17
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java15
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java4
4 files changed, 30 insertions, 8 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
index 05a64d633a4..5c9669e5258 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
@@ -103,7 +103,7 @@ public class FeedHandlerV3 extends LoggingRequestHandler {
SourceSessionParams sourceSessionParams = sourceSessionParams(request);
clientFeederByClientId.put(clientId,
new ClientFeederV3(retainSource(sessionCache, sourceSessionParams),
- new FeedReaderFactory(),
+ new FeedReaderFactory(true), //TODO make error debugging configurable
docTypeManager,
clientId,
metric,
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
index 749f569d718..81b08d5fb25 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
@@ -8,7 +8,6 @@ import com.yahoo.vespa.http.client.config.FeedParams;
import com.yahoo.vespaxmlparser.FeedReader;
import com.yahoo.vespaxmlparser.VespaXMLFeedReader;
-import java.io.IOException;
import java.io.InputStream;
/**
@@ -18,6 +17,11 @@ import java.io.InputStream;
public class FeedReaderFactory {
private static final int MARK_READLIMIT = 200;
+ private final boolean debug;
+ public FeedReaderFactory(boolean debug) {
+ this.debug = debug;
+ }
+
/**
* Creates FeedReader
* @param inputStream source of feed data
@@ -31,17 +35,22 @@ public class FeedReaderFactory {
FeedParams.DataFormat dataFormat) {
switch (dataFormat) {
case XML_UTF8:
- byte [] peek = new byte[MARK_READLIMIT];
+ byte [] peek = null;
int bytesPeeked = 0;
try {
- if (inputStream.markSupported()) {
+ if (debug && inputStream.markSupported()) {
+ peek = new byte[MARK_READLIMIT];
inputStream.mark(MARK_READLIMIT);
bytesPeeked = inputStream.read(peek);
inputStream.reset();
}
return new VespaXMLFeedReader(inputStream, docTypeManager);
} catch (Exception e) {
- throw new RuntimeException("Could not create VespaXMLFeedReader. First characters are: '" + Utf8.toString(peek, 0, bytesPeeked) + "'", e);
+ if (bytesPeeked > 0) {
+ throw new RuntimeException("Could not create VespaXMLFeedReader. First characters are: '" + Utf8.toString(peek, 0, bytesPeeked) + "'", e);
+ } else {
+ throw new RuntimeException("Could not create VespaXMLFeedReader.", e);
+ }
}
case JSON_UTF8:
return new JsonFeedReader(inputStream, docTypeManager);
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
index dab328d56d4..47f057013b7 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
@@ -1,3 +1,4 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.document.DocumentTypeManager;
@@ -12,7 +13,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class FeedReaderFactoryTestCase {
- FeedReaderFactory ffr = new FeedReaderFactory();
DocumentTypeManager manager = new DocumentTypeManager();
private InputStream createStream(String s) {
@@ -20,12 +20,21 @@ public class FeedReaderFactoryTestCase {
}
@Test
- public void testXmlException() {
+ public void testXmlExceptionWithDebug() {
try {
- ffr.createReader(createStream("Some malformed xml"), manager, FeedParams.DataFormat.XML_UTF8);
+ new FeedReaderFactory(true).createReader(createStream("Some malformed xml"), manager, FeedParams.DataFormat.XML_UTF8);
fail();
} catch (RuntimeException e) {
assertEquals("Could not create VespaXMLFeedReader. First characters are: 'Some malformed xml'", e.getMessage());
}
}
+ @Test
+ public void testXmlException() {
+ try {
+ new FeedReaderFactory(false).createReader(createStream("Some malformed xml"), manager, FeedParams.DataFormat.XML_UTF8);
+ fail();
+ } catch (RuntimeException e) {
+ assertEquals("Could not create VespaXMLFeedReader.", e.getMessage());
+ }
+ }
}
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
index 9a61af7266f..df1d5505632 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
@@ -13,6 +13,10 @@ import java.io.InputStream;
*/
public class MockFeedReaderFactory extends FeedReaderFactory {
+ public MockFeedReaderFactory() {
+ super(true);
+ }
+
@Override
public FeedReader createReader(
InputStream inputStream,