summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
diff options
context:
space:
mode:
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);
}
}