diff options
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.java | 34 |
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); } } |