|
@@ -31,7 +31,6 @@ import org.apache.lucene.search.TopDocs;
|
|
|
import org.apache.lucene.store.Directory;
|
|
|
import org.apache.lucene.util.Accountable;
|
|
|
import org.apache.lucene.util.BytesRef;
|
|
|
-import org.elasticsearch.core.internal.io.IOUtils;
|
|
|
import org.elasticsearch.common.bytes.BytesReference;
|
|
|
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
|
|
import org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader;
|
|
@@ -39,6 +38,7 @@ import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
|
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
|
|
import org.elasticsearch.common.xcontent.XContentType;
|
|
|
+import org.elasticsearch.core.internal.io.IOUtils;
|
|
|
import org.elasticsearch.index.cache.request.ShardRequestCache;
|
|
|
import org.elasticsearch.index.query.TermQueryBuilder;
|
|
|
import org.elasticsearch.index.shard.ShardId;
|
|
@@ -68,7 +68,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// initial cache
|
|
|
TestEntity entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
Loader loader = new Loader(reader, 0);
|
|
|
- BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(0, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(1, requestCacheStats.stats().getMissCount());
|
|
@@ -79,7 +79,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// cache hit
|
|
|
entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(reader, 0);
|
|
|
- value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(1, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(1, requestCacheStats.stats().getMissCount());
|
|
@@ -126,7 +126,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// initial cache
|
|
|
TestEntity entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
Loader loader = new Loader(reader, 0);
|
|
|
- BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(0, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(1, requestCacheStats.stats().getMissCount());
|
|
@@ -140,7 +140,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// cache the second
|
|
|
TestEntity secondEntity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(secondReader, 0);
|
|
|
- value = cache.getOrCompute(entity, loader, secondReader, termBytes);
|
|
|
+ value = cache.getOrCompute(entity, loader, secondReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("bar", value.streamInput().readString());
|
|
|
assertEquals(0, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(2, requestCacheStats.stats().getMissCount());
|
|
@@ -152,7 +152,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
|
|
|
secondEntity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(secondReader, 0);
|
|
|
- value = cache.getOrCompute(secondEntity, loader, secondReader, termBytes);
|
|
|
+ value = cache.getOrCompute(secondEntity, loader, secondReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("bar", value.streamInput().readString());
|
|
|
assertEquals(1, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(2, requestCacheStats.stats().getMissCount());
|
|
@@ -162,7 +162,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
|
|
|
entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(reader, 0);
|
|
|
- value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(2, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(2, requestCacheStats.stats().getMissCount());
|
|
@@ -222,9 +222,9 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
TestEntity secondEntity = new TestEntity(requestCacheStats, indexShard);
|
|
|
Loader secondLoader = new Loader(secondReader, 0);
|
|
|
|
|
|
- BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value1.streamInput().readString());
|
|
|
- BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes);
|
|
|
+ BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("bar", value2.streamInput().readString());
|
|
|
size = requestCacheStats.stats().getMemorySize();
|
|
|
IOUtils.close(reader, secondReader, writer, dir, cache);
|
|
@@ -257,12 +257,12 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
TestEntity thirddEntity = new TestEntity(requestCacheStats, indexShard);
|
|
|
Loader thirdLoader = new Loader(thirdReader, 0);
|
|
|
|
|
|
- BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value1.streamInput().readString());
|
|
|
- BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes);
|
|
|
+ BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("bar", value2.streamInput().readString());
|
|
|
logger.info("Memory size: {}", requestCacheStats.stats().getMemorySize());
|
|
|
- BytesReference value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes);
|
|
|
+ BytesReference value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("baz", value3.streamInput().readString());
|
|
|
assertEquals(2, cache.count());
|
|
|
assertEquals(1, requestCacheStats.stats().getEvictions());
|
|
@@ -298,12 +298,12 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
TestEntity thirddEntity = new TestEntity(requestCacheStats, differentIdentity);
|
|
|
Loader thirdLoader = new Loader(thirdReader, 0);
|
|
|
|
|
|
- BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value1 = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value1.streamInput().readString());
|
|
|
- BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes);
|
|
|
+ BytesReference value2 = cache.getOrCompute(secondEntity, secondLoader, secondReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("bar", value2.streamInput().readString());
|
|
|
logger.info("Memory size: {}", requestCacheStats.stats().getMemorySize());
|
|
|
- BytesReference value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes);
|
|
|
+ BytesReference value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("baz", value3.streamInput().readString());
|
|
|
assertEquals(3, cache.count());
|
|
|
final long hitCount = requestCacheStats.stats().getHitCount();
|
|
@@ -312,7 +312,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
cache.cleanCache();
|
|
|
assertEquals(1, cache.count());
|
|
|
// third has not been validated since it's a different identity
|
|
|
- value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes);
|
|
|
+ value3 = cache.getOrCompute(thirddEntity, thirdLoader, thirdReader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals(hitCount + 1, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals("baz", value3.streamInput().readString());
|
|
|
|
|
@@ -371,7 +371,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// initial cache
|
|
|
TestEntity entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
Loader loader = new Loader(reader, 0);
|
|
|
- BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ BytesReference value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(0, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(1, requestCacheStats.stats().getMissCount());
|
|
@@ -382,7 +382,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
// cache hit
|
|
|
entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(reader, 0);
|
|
|
- value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(1, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(1, requestCacheStats.stats().getMissCount());
|
|
@@ -396,7 +396,7 @@ public class IndicesRequestCacheTests extends ESTestCase {
|
|
|
entity = new TestEntity(requestCacheStats, indexShard);
|
|
|
loader = new Loader(reader, 0);
|
|
|
cache.invalidate(entity, reader, termBytes);
|
|
|
- value = cache.getOrCompute(entity, loader, reader, termBytes);
|
|
|
+ value = cache.getOrCompute(entity, loader, reader, termBytes, () -> termQuery.toString());
|
|
|
assertEquals("foo", value.streamInput().readString());
|
|
|
assertEquals(1, requestCacheStats.stats().getHitCount());
|
|
|
assertEquals(2, requestCacheStats.stats().getMissCount());
|