diff --git a/sawmill-core/src/main/java/io/logz/sawmill/processors/ArraysIntersectProcessor.java b/sawmill-core/src/main/java/io/logz/sawmill/processors/ArraysIntersectProcessor.java index 337b8594..8f03dfda 100644 --- a/sawmill-core/src/main/java/io/logz/sawmill/processors/ArraysIntersectProcessor.java +++ b/sawmill-core/src/main/java/io/logz/sawmill/processors/ArraysIntersectProcessor.java @@ -29,6 +29,10 @@ public ArraysIntersectProcessor(String sourceFieldA, String sourceFieldB, String @Override public ProcessResult process(Doc doc) { + if (!doc.hasField(sourceFieldA) || !doc.hasField(sourceFieldB)) { + return ProcessResult.failure("One or both input fields are missing"); + } + Iterable arrayA = doc.getField(sourceFieldA); Iterable arrayB = doc.getField(sourceFieldB); diff --git a/sawmill-core/src/test/java/io/logz/sawmill/processors/ArraysIntersectProcessorTest.java b/sawmill-core/src/test/java/io/logz/sawmill/processors/ArraysIntersectProcessorTest.java index ebab0848..e24e5a91 100644 --- a/sawmill-core/src/test/java/io/logz/sawmill/processors/ArraysIntersectProcessorTest.java +++ b/sawmill-core/src/test/java/io/logz/sawmill/processors/ArraysIntersectProcessorTest.java @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableMap; import io.logz.sawmill.Doc; +import io.logz.sawmill.ProcessResult; import io.logz.sawmill.Processor; import org.junit.Test; @@ -53,16 +54,17 @@ public void testEmptyIntersectionAddsEmptyList() throws InterruptedException { } @Test - public void testMissingSourceFieldsFailsProcessing() { + public void testMissingSourceFieldsFailsProcessing() throws InterruptedException { String badFieldName = "some-other-field"; Processor processor = createProcessor(ArraysIntersectProcessor.class, LIST_INTERSECT_CONFIG); List array = Arrays.asList(1, 2, 3); Doc doc = createDoc(badFieldName, array, SOURCE_FIELD_B, array); - assertThatThrownBy(() -> processor.process(doc)) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining(SOURCE_FIELD_A); - assertThat(doc.hasField(TARGET_FIELD)).isEqualTo(false); + + ProcessResult processResult = processor.process(doc); + assertThat(processResult.isSucceeded()).isFalse(); + assertThat(processResult.getError()).isPresent(); + assertThat(processResult.getError().get().getMessage()).contains("One or both input fields are missing"); } @Test