diff options
author | gjoranv <gv@oath.com> | 2018-05-04 11:19:52 +0200 |
---|---|---|
committer | gjoranv <gv@oath.com> | 2018-05-04 11:25:56 +0200 |
commit | dd71cb045baf5f23b29f2d6adf1d18b7cb24817f (patch) | |
tree | 54bb352e07991c0a86ad42ff5c3cf41ce9f8e5b7 /container-search/src/main/java/com/yahoo/prelude/searcher | |
parent | 489478804f543762078494e235f31ace181950e9 (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.java | 77 |
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; - } - -} |