diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-06 17:55:48 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-07 06:30:42 +0200 |
commit | 13bb556cb57a566656d6698377488268ef0ddea1 (patch) | |
tree | e4c485c4c391c2fd323c9d9efaaa074f4b5f05dd /config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java | |
parent | 7b0b984700c8fdcde486fee7b913f2039cb3c407 (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.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); } } |