aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-02-08 10:58:14 +0100
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-02-08 10:58:14 +0100
commit577de85317a6603a891b243e1436e503fb18da93 (patch)
tree8fd09144a5dc3d76fc6ac5f150f9d3628da5a590 /config-model
parent551cb115ce7f2873bbceeeda7dcd0ace151d6e88 (diff)
Add information about redundancy in error message
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java5
3 files changed, 15 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
index 72a2f41fb6e..684c9aeb225 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
@@ -32,9 +32,14 @@ public class GlobalDistributionValidator {
private static void verifyGlobalDocumentsHaveRequiredRedundancy(Set<NewDocumentType> globallyDistributedDocuments,
Redundancy redundancy) {
if (!globallyDistributedDocuments.isEmpty() && !redundancy.isEffectivelyGloballyDistributed()) {
- throw new IllegalArgumentException("The following document types are marked as global, " +
- "but do not have high enough redundancy to make the documents globally distributed: " +
- asPrintableString(toDocumentNameStream(globallyDistributedDocuments)));
+ throw new IllegalArgumentException(
+ String.format(
+ "The following document types are marked as global, " +
+ "but do not have high enough redundancy to make the documents globally distributed: %s. " +
+ "Redundancy is %d, expected %d.",
+ asPrintableString(toDocumentNameStream(globallyDistributedDocuments)),
+ redundancy.effectiveFinalRedundancy(),
+ redundancy.totalNodes()));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
index ecc41f5156b..f458bb54524 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
@@ -46,6 +46,9 @@ public class Redundancy implements StorDistributionConfig.Producer, ProtonConfig
public int initialRedundancy() { return initialRedundancy; }
public int finalRedundancy() { return finalRedundancy; }
public int readyCopies() { return readyCopies; }
+ public int totalNodes() {
+ return totalNodes;
+ }
public int effectiveInitialRedundancy() { return Math.min(totalNodes, initialRedundancy * implicitGroups); }
public int effectiveFinalRedundancy() { return Math.min(totalNodes, finalRedundancy * implicitGroups); }
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
index 9d53e52e31e..4f980329e23 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
@@ -33,11 +33,14 @@ public class GlobalDistributionValidatorTest {
.collect(toMap(identity(), name -> new NewDocumentType(new NewDocumentType.Name(name))));
HashSet<NewDocumentType> globallyDistributedDocuments = new HashSet<>(documentTypes.values());
Redundancy redundancy = createRedundancyWithGlobalDistributionValue(false);
+ when(redundancy.effectiveFinalRedundancy()).thenReturn(1);
+ when(redundancy.totalNodes()).thenReturn(2);
exceptionRule.expect(IllegalArgumentException.class);
exceptionRule.expectMessage(
"The following document types are marked as global, " +
- "but do not have high enough redundancy to make the documents globally distributed: 'bar', 'foo'");
+ "but do not have high enough redundancy to make the documents globally distributed: " +
+ "'bar', 'foo'. Redundancy is 1, expected 2.");
new GlobalDistributionValidator()
.validate(documentTypes, globallyDistributedDocuments, redundancy);
}