@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { // ParallelReader instances can be short-lived, which would make caching trappy // so we do not cache on them, unless they wrap a single reader in which // case we delegate if (parallelReaders.length == 1 && storedFieldsReaders.length == 1 && parallelReaders[0] == storedFieldsReaders[0]) { return parallelReaders[0].getCoreCacheHelper(); } return null; }
@Override public CacheHelper getCoreCacheHelper() { return reader.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { return reader.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { return reader.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); } @Override
@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); }
final IndexReader.CacheHelper cacheHelper = context.reader().getCoreCacheHelper(); if (cacheHelper == null) {
final IndexReader.CacheHelper cacheHelper = context.reader().getCoreCacheHelper(); if (cacheHelper == null) {
throw new IllegalArgumentException("Could not extract shard id from " + reader); final IndexReader.CacheHelper cacheHelper = reader.getCoreCacheHelper(); if (cacheHelper == null) { throw new IllegalArgumentException("Reader " + reader + " does not support caching");
/** * Initialize lookup for the provided segment */ PerThreadIDVersionAndSeqNoLookup(LeafReader reader, String uidField) throws IOException { this.uidField = uidField; final Terms terms = reader.terms(uidField); if (terms == null) { // If a segment contains only no-ops, it does not have _uid but has both _soft_deletes and _tombstone fields. final NumericDocValues softDeletesDV = reader.getNumericDocValues(Lucene.SOFT_DELETES_FIELD); final NumericDocValues tombstoneDV = reader.getNumericDocValues(SeqNoFieldMapper.TOMBSTONE_NAME); if (softDeletesDV == null || tombstoneDV == null) { throw new IllegalArgumentException("reader does not have _uid terms but not a no-op segment; " + "_soft_deletes [" + softDeletesDV + "], _tombstone [" + tombstoneDV + "]"); } termsEnum = null; } else { termsEnum = terms.iterator(); } if (reader.getNumericDocValues(VersionFieldMapper.NAME) == null) { throw new IllegalArgumentException("reader misses the [" + VersionFieldMapper.NAME + "] field; _uid terms [" + terms + "]"); } Object readerKey = null; assert (readerKey = reader.getCoreCacheHelper().getKey()) != null; this.readerKey = readerKey; }
@Override public <FD extends AtomicFieldData, IFD extends IndexFieldData<FD>> FD load(final LeafReaderContext context, final IFD indexFieldData) throws Exception { final ShardId shardId = ShardUtils.extractShardId(context.reader()); final IndexReader.CacheHelper cacheHelper = context.reader().getCoreCacheHelper(); if (cacheHelper == null) { throw new IllegalArgumentException("Reader " + context.reader() + " does not support caching"); } final Key key = new Key(this, cacheHelper.getKey(), shardId); //noinspection unchecked final Accountable accountable = cache.computeIfAbsent(key, k -> { cacheHelper.addClosedListener(IndexFieldCache.this); Collections.addAll(k.listeners, this.listeners); final AtomicFieldData fieldData = indexFieldData.loadDirect(context); for (Listener listener : k.listeners) { try { listener.onCache(shardId, fieldName, fieldData); } catch (Exception e) { // load anyway since listeners should not throw exceptions logger.error("Failed to call listener on atomic field data loading", e); } } return fieldData; }); return (FD) accountable; }
@Override public CacheHelper getCoreCacheHelper() { // ParallelReader instances can be short-lived, which would make caching trappy // so we do not cache on them, unless they wrap a single reader in which // case we delegate if (parallelReaders.length == 1 && storedFieldsReaders.length == 1 && parallelReaders[0] == storedFieldsReaders[0]) { return parallelReaders[0].getCoreCacheHelper(); } return null; }
@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); } @Override
@Override public CacheHelper getCoreCacheHelper() { return reader.getCoreCacheHelper(); }
@Override public CacheHelper getCoreCacheHelper() { return in.getCoreCacheHelper(); }
assert context.reader().getCoreCacheHelper().getKey().equals(readerKey) : "context's reader is not the same as the reader class was initialized on."; int docID = getDocID(id, context.reader().getLiveDocs());
private BitSet getAndLoadIfNotPresent(final Query query, final LeafReaderContext context) throws IOException, ExecutionException { final IndexReader.CacheHelper cacheHelper = context.reader().getCoreCacheHelper(); if (cacheHelper == null) { throw new IllegalArgumentException("Reader " + context.reader() + " does not support caching");
assert context.reader().getCoreCacheHelper().getKey().equals(readerKey) : "context's reader is not the same as the reader class was initialized on.";