Skip to content

Commit 8a973f9

Browse files
committed
comment and simplify
1 parent a009918 commit 8a973f9

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -760,11 +760,9 @@ public GetResult get(
760760
try (ReleasableLock ignored = readLock.acquire()) {
761761
ensureOpen();
762762
if (get.realtime()) {
763-
var result = realtimeGetUnderLock(get, mappingLookup, documentParser, searcherWrapper);
764-
if (result != null) {
765-
return result;
766-
}
767-
return getFromSearcher(get, acquireSearcher("realtime_get", SearcherScope.INTERNAL, searcherWrapper), false);
763+
var result = realtimeGetUnderLock(get, mappingLookup, documentParser, searcherWrapper, true);
764+
assert result != null : "real-time get result must not be null";
765+
return result;
768766
} else {
769767
// we expose what has been externally expose in a point in time snapshot via an explicit refresh
770768
return getFromSearcher(get, acquireSearcher("get", SearcherScope.EXTERNAL, searcherWrapper), false);
@@ -782,15 +780,20 @@ public GetResult getFromTranslog(
782780
assert assertGetUsesIdField(get);
783781
try (ReleasableLock ignored = readLock.acquire()) {
784782
ensureOpen();
785-
return realtimeGetUnderLock(get, mappingLookup, documentParser, searcherWrapper);
783+
return realtimeGetUnderLock(get, mappingLookup, documentParser, searcherWrapper, false);
786784
}
787785
}
788786

787+
/**
788+
* @param getFromSearcher indicates whether we also try the internal searcher if not found in translog. In the case where
789+
* we just started tracking locations in the translog, we always use the internal searcher.
790+
*/
789791
protected GetResult realtimeGetUnderLock(
790792
Get get,
791793
MappingLookup mappingLookup,
792794
DocumentParser documentParser,
793-
Function<Engine.Searcher, Engine.Searcher> searcherWrapper
795+
Function<Engine.Searcher, Engine.Searcher> searcherWrapper,
796+
boolean getFromSearcher
794797
) {
795798
assert readLock.isHeldByCurrentThread();
796799
assert get.realtime();
@@ -799,6 +802,7 @@ protected GetResult realtimeGetUnderLock(
799802
// we need to lock here to access the version map to do this truly in RT
800803
versionValue = getVersionFromMap(get.uid().bytes());
801804
}
805+
boolean getFromSearcherIfNotInTranslog = getFromSearcher;
802806
if (versionValue != null) {
803807
if (versionValue.isDelete()) {
804808
return GetResult.NOT_EXISTS;
@@ -836,14 +840,15 @@ protected GetResult realtimeGetUnderLock(
836840
trackTranslogLocation.set(true);
837841
// We need to start tracking translog locations in the live version map. Refresh and
838842
// serve the get from the internal searcher even if we're supposed to only get from translog.
839-
assert versionValue.seqNo >= 0 : versionValue;
840-
refreshIfNeeded("realtime_get", versionValue.seqNo);
841-
return getFromSearcher(get, acquireSearcher("realtime_get", SearcherScope.INTERNAL, searcherWrapper), false);
843+
getFromSearcherIfNotInTranslog = true;
842844
}
843845
}
844846
assert versionValue.seqNo >= 0 : versionValue;
845847
refreshIfNeeded("realtime_get", versionValue.seqNo);
846848
}
849+
if (getFromSearcherIfNotInTranslog) {
850+
return getFromSearcher(get, acquireSearcher("realtime_get", SearcherScope.INTERNAL, searcherWrapper), false);
851+
}
847852
return null;
848853
}
849854

server/src/main/java/org/elasticsearch/index/shard/IndexShard.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,9 +1222,7 @@ private Engine.GetResult innerGet(Engine.Get get, boolean translogOnly) {
12221222
if (translogOnly) {
12231223
return getEngine().getFromTranslog(get, mappingLookup, mapperService.documentParser(), this::wrapSearcher);
12241224
}
1225-
var result = getEngine().get(get, mappingLookup, mapperService.documentParser(), this::wrapSearcher);
1226-
assert result != null : "result cannot be null";
1227-
return result;
1225+
return getEngine().get(get, mappingLookup, mapperService.documentParser(), this::wrapSearcher);
12281226
}
12291227

12301228
/**

0 commit comments

Comments
 (0)