diff options
author | Rong-En Fan <rafan@verizonmedia.com> | 2020-04-01 17:30:03 +0800 |
---|---|---|
committer | Rong-En Fan <rafan@verizonmedia.com> | 2020-04-01 17:32:28 +0800 |
commit | f4c622836569b015fff25fc2adb2826134d60a1d (patch) | |
tree | 9dce8e0df30a6ff490f98e128212b93acd3f6de5 /vespa-hadoop/src/test | |
parent | ede7a4ac09e169813087b05d8b98818332b6578c (diff) |
Improve error handling
- Fix NoClassDefFoundError on shaded/vespa/commons/lang/exception/ExceptionUtils
The ExceptionUtils from vespajlib would be a good replacement if it was
client library (JDK 8 compatible). To minimize dependency, simply grab
the implementation.
- Emit UDF error logs to stderr so it can be examined
- Use different PigWarning to make triage easier
Diffstat (limited to 'vespa-hadoop/src/test')
-rw-r--r-- | vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java index 3c6805019b8..c1ff925697d 100644 --- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java +++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java @@ -85,6 +85,27 @@ public class VespaDocumentOperationTest { @Test + public void requireThatUDFReturnsNullWhenExceptionHappens() throws IOException { + Schema schema = new Schema(); + Tuple tuple = TupleFactory.getInstance().newTuple(); + + // broken DELTA format that would throw internally + Map<String, Double> tensor = new HashMap<String, Double>() {{ + put("xlabel1", 2.0); // missing : between 'x' and 'label1' + }}; + + addToTuple("id", DataType.CHARARRAY, "123", schema, tuple); + addToTuple("tensor", DataType.MAP, tensor, schema, tuple); + + VespaDocumentOperation docOp = new VespaDocumentOperation("docid=empty", "create-tensor-fields=tensor"); + docOp.setInputSchema(schema); + String json = docOp.exec(tuple); + + assertNull(json); + } + + + @Test public void requireThatUDFCorrectlyGeneratesRemoveOperation() throws Exception { String json = getDocumentOperationJson("operation=remove", "docid=id:<application>:metrics::<name>-<date>"); ObjectMapper m = new ObjectMapper(); |