summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java22
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java14
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java1
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java3
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java5
6 files changed, 35 insertions, 12 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
index e755abc7d66..1be45b01367 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
@@ -173,11 +173,15 @@ public class SearchCluster implements NodeManager<Node> {
}
public boolean hasInformationAboutAllNodes() {
- return groups().stream().allMatch(g -> g.nodes().stream().allMatch(node -> node.isWorking() != null));
+ return groups().stream().allMatch(group -> group.nodes().stream().allMatch(node -> node.isWorking() != null));
+ }
+
+ public long nonWorkingNodeCount() {
+ return groups().stream().flatMap(group -> group.nodes().stream()).filter(node -> node.isWorking() == Boolean.FALSE).count();
}
private boolean hasWorkingNodes() {
- return groups().stream().anyMatch(g -> g.nodes().stream().anyMatch(node -> node.isWorking() != Boolean.FALSE));
+ return groups().stream().anyMatch(group -> group.nodes().stream().anyMatch(node -> node.isWorking() != Boolean.FALSE));
}
private boolean usesLocalCorpusIn(Node node) {
@@ -252,11 +256,15 @@ public class SearchCluster implements NodeManager<Node> {
if (node.isWorking() != Boolean.TRUE)
unresponsive.append('\n').append(node);
}
- log.warning("Cluster " + clusterId + ": " + group + " has reduced coverage: " +
- "Active documents: " + group.activeDocuments() + "/" + medianDocuments + ", " +
- "Target active documents: " + group.targetActiveDocuments() + ", " +
- "working nodes: " + group.workingNodes() + "/" + group.nodes().size() +
- ", unresponsive nodes: " + (unresponsive.toString().isEmpty() ? " none" : unresponsive));
+ String message = "Cluster " + clusterId + ": " + group + " has reduced coverage: " +
+ "Active documents: " + group.activeDocuments() + "/" + medianDocuments + ", " +
+ "Target active documents: " + group.targetActiveDocuments() + ", " +
+ "working nodes: " + group.workingNodes() + "/" + group.nodes().size() +
+ ", unresponsive nodes: " + (unresponsive.toString().isEmpty() ? " none" : unresponsive);
+ if (nonWorkingNodeCount() == 1) // That is normal
+ log.info(message);
+ else
+ log.warning(message);
}
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
index 3d981c5e45a..a83ef963005 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
@@ -3,6 +3,7 @@ package com.yahoo.search.dispatch.searchcluster;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -87,6 +88,19 @@ public class SearchClusterCoverageTest {
}
@Test
+ void test_non_working_node_count() {
+ var tester = new SearchClusterTester(3, 3);
+ tester.setDocsPerNode(100, 0);
+ tester.setDocsPerNode(100, 1);
+ tester.setDocsPerNode(100, 2);
+ assertEquals(0, tester.cluster().nonWorkingNodeCount());
+ tester.setWorking(1, 1, false);
+ assertEquals(1, tester.cluster().nonWorkingNodeCount());
+ tester.setWorking(2, 2, false);
+ assertEquals(2, tester.cluster().nonWorkingNodeCount());
+ }
+
+ @Test
void three_groups_one_has_a_node_down_but_remaining_has_enough_docs() {
var tester = new SearchClusterTester(3, 3);
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
index ddb0b9fa809..51256ec496e 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
@@ -375,4 +375,5 @@ public class SearchClusterTest {
group.aggregateNodeValues();
assertTrue(group.isBalanced());
}
+
}
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
index 31f250072fe..35d990be412 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
@@ -9,6 +9,8 @@ public class SearchClusterTester {
cluster = new MockSearchCluster("1", groups, nodesPerGroup);
}
+ public SearchCluster cluster() { return cluster; }
+
public void pingIterationCompleted() {
cluster.pingIterationCompleted();
}
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
index f7f8d0e6a10..9e5609a96c7 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
@@ -58,8 +58,7 @@ public class DocumentProcessingTask implements Runnable {
try {
processings.addAll(requestContext.getProcessings());
} catch (Exception e) {
- //deserialization failed:
- log.log(Level.WARNING, "Deserialization of message failed.", e);
+ log.log(Level.WARNING, "Deserialization of message failed", e);
requestContext.processingFailed(e);
return;
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
index 2796609543f..6ab0698e0bd 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
@@ -550,15 +550,14 @@ public class VespaDocumentDeserializer6 extends BufferSerializer implements Docu
Field field = fieldUpdate.getDocumentType().getField(fieldId);
if (field == null) {
throw new DeserializationException(
- "Cannot deserialize FieldUpdate, field fieldId " + fieldId + " not found in " + fieldUpdate.getDocumentType());
+ "Cannot deserialize FieldUpdate: Field fieldId " + fieldId + " not found in " + fieldUpdate.getDocumentType());
}
fieldUpdate.setField(field);
int size = getInt(null);
for (int i = 0; i < size; i++) {
- if (field.getDataType() instanceof CollectionDataType) {
- CollectionDataType collType = (CollectionDataType) field.getDataType();
+ if (field.getDataType() instanceof CollectionDataType collType) {
fieldUpdate.addValueUpdate(getValueUpdate(collType, collType.getNestedType()));
} else {
fieldUpdate.addValueUpdate(getValueUpdate(field.getDataType(), null));