summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-06 17:55:48 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-09-07 06:30:42 +0200
commit13bb556cb57a566656d6698377488268ef0ddea1 (patch)
treee4c485c4c391c2fd323c9d9efaaa074f4b5f05dd /config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
parent7b0b984700c8fdcde486fee7b913f2039cb3c407 (diff)
Wire in executor in deploystate that can be use to speed up deployments. Fx compile rankprofiles in parallell.
Currently only uses a foreground executor giving no semantic difference compared to normal single threaded execution.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java34
1 files changed, 23 insertions, 11 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
index 7f19fcd24d4..6528c9195d4 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
@@ -3,7 +3,6 @@ package com.yahoo.searchdefinition.derived;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.OnnxModel;
import com.yahoo.searchdefinition.OnnxModels;
@@ -19,8 +18,13 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.AbstractService;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
import java.util.logging.Logger;
/**
@@ -61,13 +65,14 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfiles,
ImportedMlModels importedModels,
- ModelContext.Properties deployProperties) {
+ ModelContext.Properties deployProperties,
+ ExecutorService executor) {
setName(search == null ? "default" : search.getName());
this.rankingConstants = rankingConstants;
this.largeRankExpressions = largeRankExpressions;
this.onnxModels = onnxModels; // as ONNX models come from parsing rank expressions
dryRunOnnxOnSetup = deployProperties.featureFlags().dryRunOnnxOnSetup();
- deriveRankProfiles(rankProfileRegistry, queryProfiles, importedModels, search, attributeFields, deployProperties);
+ deriveRankProfiles(rankProfileRegistry, queryProfiles, importedModels, search, attributeFields, deployProperties, executor);
}
private void deriveRankProfiles(RankProfileRegistry rankProfileRegistry,
@@ -75,12 +80,12 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
ImportedMlModels importedModels,
Search search,
AttributeFields attributeFields,
- ModelContext.Properties deployProperties) {
+ ModelContext.Properties deployProperties,
+ ExecutorService executor) {
+ List<Future<RawRankProfile>> futureRawRankProfiles = new ArrayList<>();
if (search != null) { // profiles belonging to a search have a default profile
- RawRankProfile defaultProfile = new RawRankProfile(rankProfileRegistry.get(search, "default"),
- largeRankExpressions, queryProfiles, importedModels,
- attributeFields, deployProperties);
- rankProfiles.put(defaultProfile.getName(), defaultProfile);
+ futureRawRankProfiles.add(executor.submit(() -> new RawRankProfile(rankProfileRegistry.get(search, "default"),
+ largeRankExpressions, queryProfiles, importedModels, attributeFields, deployProperties)));
}
for (RankProfile rank : rankProfileRegistry.rankProfilesOf(search)) {
@@ -89,9 +94,16 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
this.onnxModels.add(rank.onnxModels());
}
- RawRankProfile rawRank = new RawRankProfile(rank, largeRankExpressions, queryProfiles, importedModels,
- attributeFields, deployProperties);
- rankProfiles.put(rawRank.getName(), rawRank);
+ futureRawRankProfiles.add(executor.submit(() -> new RawRankProfile(rank, largeRankExpressions, queryProfiles, importedModels,
+ attributeFields, deployProperties)));
+ }
+ try {
+ for (Future<RawRankProfile> rawFuture : futureRawRankProfiles) {
+ RawRankProfile rawRank = rawFuture.get();
+ rankProfiles.put(rawRank.getName(), rawRank);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IllegalStateException(e);
}
}