summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/searcher
diff options
context:
space:
mode:
authorgjoranv <gv@oath.com>2018-05-04 11:19:52 +0200
committergjoranv <gv@oath.com>2018-05-04 11:25:56 +0200
commitdd71cb045baf5f23b29f2d6adf1d18b7cb24817f (patch)
tree54bb352e07991c0a86ad42ff5c3cf41ce9f8e5b7 /container-search/src/main/java/com/yahoo/prelude/searcher
parent489478804f543762078494e235f31ace181950e9 (diff)
Remove CachingSearcher and its Cache with SizeCalculator
- The SizeCalculator uses recursive reflective calls in the object tree, and attempts illegal access to e.g. java.lang.module classes on Java 9+. With this access explicitly allowed via "--add-opens" the calculator returns a much larger size than the actual size of the object.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/searcher')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/CachingSearcher.java77
1 files changed, 0 insertions, 77 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/CachingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/CachingSearcher.java
deleted file mode 100644
index f80d6f2e1eb..00000000000
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/CachingSearcher.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.prelude.searcher;
-
-import com.yahoo.component.chain.dependencies.After;
-import com.yahoo.component.chain.dependencies.Before;
-import com.yahoo.container.QrSearchersConfig;
-import com.yahoo.search.Query;
-import com.yahoo.search.Result;
-import com.yahoo.prelude.cache.Cache;
-import com.yahoo.prelude.cache.QueryCacheKey;
-import com.yahoo.search.Searcher;
-import com.yahoo.processing.request.CompoundName;
-import com.yahoo.search.searchchain.Execution;
-import com.yahoo.statistics.Statistics;
-import com.yahoo.statistics.Value;
-
-/**
- * A generic caching searcher which caches all passing results.
- *
- * @author vegardh
- */
-@After("rawQuery")
-@Before("transformedQuery")
-public class CachingSearcher extends Searcher {
-
- private static final CompoundName nocachewrite=new CompoundName("nocachewrite");
-
- private Cache<QueryCacheKey, Result> cache;
- private Value cacheHitRatio = null;
-
- public CachingSearcher(QrSearchersConfig config, Statistics manager) {
- long maxSizeBytes = config.com().yahoo().prelude().searcher().CachingSearcher().cachesizemegabytes()*1024*1024;
- long timeToLiveMillis = config.com().yahoo().prelude().searcher().CachingSearcher().timetoliveseconds()*1000;
- long maxEntrySizeBytes = config.com().yahoo().prelude().searcher().CachingSearcher().maxentrysizebytes();
- cache=new Cache<>(maxSizeBytes, timeToLiveMillis, maxEntrySizeBytes, manager);
- initRatio(manager);
- }
-
- private void initRatio(Statistics manager) {
- cacheHitRatio = new Value("querycache_hit_ratio", manager,
- new Value.Parameters().setNameExtension(false).setLogRaw(false).setLogMean(true));
- }
-
- private synchronized void cacheHit() {
- cacheHitRatio.put(1.0d);
- }
-
- private synchronized void cacheMiss() {
- cacheHitRatio.put(0.0d);
- }
-
- private boolean noCacheWrite(Query query) {
- return query.properties().getBoolean(nocachewrite);
- }
-
- public Result search(com.yahoo.search.Query query, Execution execution) {
- if (query.getNoCache()) {
- return execution.search(query);
- }
- QueryCacheKey queryKey = new QueryCacheKey(query);
- Result cachedResult=cache.get(queryKey);
- if (cachedResult!=null) {
- cacheHit();
- return cachedResult;
- }
- cacheMiss();
- Query originalQuery = query.clone(); // Need a copy, as cache hash key later on, maybe.
- Result result = execution.search(query);
- execution.fill(result);
- if (!noCacheWrite(query)) {
- queryKey.setQuery(originalQuery); // Because the query member has changed state
- cache.put(queryKey,result);
- }
- return result;
- }
-
-}