diff options
9 files changed, 18 insertions, 61 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java index a6d063592c1..28e11ae0deb 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java @@ -26,25 +26,14 @@ import java.util.Optional; public class FederationSearcher extends Searcher<FederationSearcherModel> implements FederationConfig.Producer { private final Optional<Component> targetSelector; + private final Map<ComponentId, Target> resolvedTargets = new LinkedHashMap<>(); /** * Generates config for a single search chain contained in a target. */ - private static final class SearchChainConfig { - - private final SearchChain searchChain; - final ComponentId providerId; - final FederationOptions targetOptions; - final List<String> documentTypes; - - SearchChainConfig(SearchChain searchChain, ComponentId providerId, - FederationOptions targetOptions, List<String> documentTypes) { - this.searchChain = searchChain; - this.providerId = providerId; - this.targetOptions = targetOptions; - this.documentTypes = documentTypes; - } - + private record SearchChainConfig(SearchChain searchChain, ComponentId providerId, + FederationOptions targetOptions, List<String> documentTypes) + { FederationConfig.Target.SearchChain.Builder getSearchChainConfig() { FederationConfig.Target.SearchChain.Builder sB = new FederationConfig.Target.SearchChain.Builder(); FederationOptions resolvedOptions = targetOptions.inherit(searchChain.federationOptions()); @@ -77,9 +66,7 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem FederationConfig.Target.Builder getTargetConfig() { FederationConfig.Target.Builder tb = new FederationConfig.Target.Builder(); - tb. - id(id.stringValue()). - useByDefault(targetOptions.getUseByDefault()); + tb.id(id.stringValue()).useByDefault(targetOptions.getUseByDefault()); getSearchChainsConfig(tb); return tb; } @@ -137,10 +124,9 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem } } - private static class TargetResolver { - - final ComponentRegistry<SearchChain> searchChainRegistry; - final SourceGroupRegistry sourceGroupRegistry; + private record TargetResolver(ComponentRegistry<SearchChain> searchChainRegistry, + SourceGroupRegistry sourceGroupRegistry) + { /** Returns true if searchChain.id newer than sourceGroup.id */ private boolean newerVersion(SearchChain searchChain, SourceGroup sourceGroup) { @@ -153,12 +139,7 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem return a.compareTo(b) > 0; } - TargetResolver(ComponentRegistry<SearchChain> searchChainRegistry, SourceGroupRegistry sourceGroupRegistry) { - this.searchChainRegistry = searchChainRegistry; - this.sourceGroupRegistry = sourceGroupRegistry; - } - - Target resolve(FederationSearcherModel.TargetSpec specification) { + Target resolve(TargetSpec specification) { SearchChain searchChain = searchChainRegistry.getComponent(specification.sourceSpec); SourceGroup sourceGroup = sourceGroupRegistry.getComponent(specification.sourceSpec); @@ -172,13 +153,10 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem } } - private final Map<ComponentId, Target> resolvedTargets = new LinkedHashMap<>(); - public FederationSearcher(FederationSearcherModel searcherModel, Optional<Component> targetSelector) { super(searcherModel); this.targetSelector = targetSelector; - - targetSelector.ifPresent(selector -> addChild(selector)); + targetSelector.ifPresent(this::addChild); } @Override @@ -196,16 +174,13 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem void initialize(ComponentRegistry<SearchChain> searchChainRegistry, SourceGroupRegistry sourceGroupRegistry) { TargetResolver targetResolver = new TargetResolver(searchChainRegistry, sourceGroupRegistry); - addSourceTargets(targetResolver, model.targets); - if (model.inheritDefaultSources) addDefaultTargets(targetResolver, searchChainRegistry); } private void addSourceTargets(TargetResolver targetResolver, List<TargetSpec> targets) { for (TargetSpec targetSpec : targets) { - Target target = targetResolver.resolve(targetSpec); if (target == null) { throw new IllegalArgumentException("Can't find source " + targetSpec.sourceSpec + @@ -220,7 +195,6 @@ public class FederationSearcher extends Searcher<FederationSearcherModel> implem } } - private void addDefaultTargets(TargetResolver targetResolver, ComponentRegistry<SearchChain> searchChainRegistry) { for (GenericTarget genericTarget : defaultTargets(searchChainRegistry.allComponents())) { ComponentSpecification specification = genericTarget.getComponentId().toSpecification(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java index 037da825e74..4c382a75b24 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java @@ -98,7 +98,7 @@ public class SearchChains extends Chains<SearchChain> { return allChains; } - private void addSources(ComponentRegistry<SearchChain> chains, Provider provider) { + private static void addSources(ComponentRegistry<SearchChain> chains, Provider provider) { for (Source source : provider.getSources()) { chains.register(source.getId(), source); } diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java index 0512560e0b7..f92d218390f 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java +++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java @@ -10,7 +10,6 @@ import com.yahoo.jdisc.Metric; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; -import java.util.concurrent.Executors; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; diff --git a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java index e5393fe9b85..e92fd692cac 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java @@ -277,7 +277,7 @@ public class FederationSearcher extends ForkingSearcher { return descriptions; } - private Set<String> getMessagesSet(List<UnresolvedSearchChainException> unresolvedSearchChainExceptions) { + private static Set<String> getMessagesSet(List<UnresolvedSearchChainException> unresolvedSearchChainExceptions) { Set<String> messages = new LinkedHashSet<>(); for (UnresolvedSearchChainException exception : unresolvedSearchChainExceptions) { messages.add(exception.getMessage()); @@ -578,11 +578,7 @@ public class FederationSearcher extends ForkingSearcher { /** Returns a result to fill for a query and chain, by creating it if necessary */ public Result get(Chain<Searcher> chain, Query query) { - Map<Query,Result> resultsToFillForAChain = resultsToFill.get(chain); - if (resultsToFillForAChain == null) { - resultsToFillForAChain = new IdentityHashMap<>(); - resultsToFill.put(chain,resultsToFillForAChain); - } + Map<Query, Result> resultsToFillForAChain = resultsToFill.computeIfAbsent(chain, k -> new IdentityHashMap<>()); Result resultsToFillForAChainAndQuery = resultsToFillForAChain.get(query); if (resultsToFillForAChainAndQuery == null) { @@ -686,27 +682,18 @@ public class FederationSearcher extends ForkingSearcher { } - private static class Window { - - private final int hits; - private final int offset; - - public Window(int hits, int offset) { - this.hits = hits; - this.offset = offset; - } + private record Window(int hits, int offset) { public Integer get(CompoundName parameterName) { if (parameterName.equals(Query.HITS)) return hits; if (parameterName.equals(Query.OFFSET)) return offset; return null; } - + public static Window from(Query query) { return new Window(query.getHits(), query.getOffset()); } - public static Window from(Collection<Target> targets, Query query) { if (targets.size() == 1) // preserve requested top-level offsets return Window.from(query); diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java index bfb5bf1a9ab..a2bc12ddbd0 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java @@ -57,11 +57,11 @@ public class SearchChainResolver { }; public Builder addSearchChain(ComponentId searchChainId) { - return addSearchChain(searchChainId, Collections.<String>emptyList()); + return addSearchChain(searchChainId, List.of()); } public Builder addSearchChain(ComponentId searchChainId, FederationOptions federationOptions) { - return addSearchChain(searchChainId, federationOptions, Collections.<String>emptyList()); + return addSearchChain(searchChainId, federationOptions, List.of()); } public Builder addSearchChain(ComponentId searchChainId, List<String> documentTypes) { diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java index 7345868cae7..f096ed0de86 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java @@ -26,7 +26,7 @@ public class SourceRefResolver { Properties sourceToProviderMap, IndexFacts indexFacts) throws UnresolvedSearchChainException { try { - return new LinkedHashSet<>(List.of(searchChainResolver.resolve(sourceRef, sourceToProviderMap))); + return Set.of(searchChainResolver.resolve(sourceRef, sourceToProviderMap)); } catch (UnresolvedSourceRefException e) { return resolveClustersWithDocument(sourceRef, sourceToProviderMap, indexFacts); } diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java index 54b022e0b97..b6d99758c7b 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java @@ -1,7 +1,6 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.federation.sourceref; - import com.google.common.base.Joiner; import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java index 3cf2776259c..0c8562e6032 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java @@ -5,7 +5,6 @@ package com.yahoo.search.federation.sourceref; * Thrown if a search chain can not be resolved from one or more ids. * @author Tony Vaagenes */ -@SuppressWarnings("serial") public class UnresolvedSearchChainException extends Exception { public UnresolvedSearchChainException(String msg) { super(msg); diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java index a7da7a7ee04..fa2c1da13f0 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java @@ -6,7 +6,6 @@ import com.yahoo.component.ComponentSpecification; /** * @author Tony Vaagenes */ -@SuppressWarnings("serial") class UnresolvedSourceRefException extends UnresolvedSearchChainException { UnresolvedSourceRefException(String msg) { super(msg); |