summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-10-24 16:33:56 +0200
committerGitHub <noreply@github.com>2019-10-24 16:33:56 +0200
commita51c511c0e1043acfcc7e1196cc8ead2829d7245 (patch)
tree7d8f0152f1273b753f56576ec8c6fcc9a9890557 /config-model/src/main/java
parentb5e789393f052d55378c09118c1bb64e39563c99 (diff)
parent8a89bb044db2823b84411daefe09afe65f4c13f1 (diff)
Merge pull request #11084 from vespa-engine/toregge/update-summary-disk-access-validator-for-struct-fields
Update SummaryDiskAccessValidator for struct fields.
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDiskAccessValidator.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDiskAccessValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDiskAccessValidator.java
index 8c0c6a74037..2fab941b10e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDiskAccessValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDiskAccessValidator.java
@@ -7,11 +7,14 @@ import com.yahoo.searchdefinition.derived.SummaryClass;
import com.yahoo.searchdefinition.document.ImmutableSDField;
import com.yahoo.vespa.documentmodel.DocumentSummary;
import com.yahoo.vespa.documentmodel.SummaryField;
+import com.yahoo.vespa.documentmodel.SummaryTransform;
import com.yahoo.vespa.model.container.search.QueryProfiles;
import java.util.Optional;
import java.util.logging.Level;
+import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isComplexFieldWithOnlyStructFieldAttributes;
+
/**
* Emits a warning for summaries which accesses disk.
*
@@ -41,7 +44,7 @@ public class SummaryDiskAccessValidator extends Processor {
if (field == null && ! source.getName().equals(SummaryClass.DOCUMENT_ID_FIELD))
throw new IllegalArgumentException(summaryField + " in " + summary + " references " +
source + ", but this field does not exist");
- if ( ! isInMemory(field) && ! summary.isFromDisk()) {
+ if ( ! isInMemory(field, summaryField) && ! summary.isFromDisk()) {
deployLogger.log(Level.WARNING, summaryField + " in " + summary + " references " +
source + ", which is not an attribute: Using this " +
"summary will cause disk accesses. " +
@@ -52,8 +55,13 @@ public class SummaryDiskAccessValidator extends Processor {
}
}
- private boolean isInMemory(ImmutableSDField field) {
+ private boolean isInMemory(ImmutableSDField field, SummaryField summaryField) {
if (field == null) return false; // For DOCUMENT_ID_FIELD, which may be implicit, but is then not in memory
+ if (isComplexFieldWithOnlyStructFieldAttributes(field) &&
+ (summaryField.getTransform() == SummaryTransform.ATTRIBUTECOMBINER ||
+ summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)) {
+ return true;
+ }
return field.doesAttributing();
}