Skip to content

Commit 5f7d6b6

Browse files
committed
address review comments
1 parent 1369f07 commit 5f7d6b6

File tree

5 files changed

+23
-24
lines changed

5 files changed

+23
-24
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,10 @@ public abstract GetResult get(
634634
Function<Engine.Searcher, Engine.Searcher> searcherWrapper
635635
);
636636

637-
// Similar to Engine.get, but it only attempts to serve the get from the translog.
638-
// If not found in translog, it returns null, as {@code GetResult.NOT_EXISTS} could mean deletion.
637+
/**
638+
* Similar to {@link Engine#get}, but it only attempts to serve the get from the translog.
639+
* If not found in translog, it returns null, as {@link GetResult#NOT_EXISTS} could mean deletion.
640+
*/
639641
public GetResult getFromTranslog(
640642
Get get,
641643
MappingLookup mappingLookup,

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public class InternalEngine extends Engine {
142142
// A uid (in the form of BytesRef) to the version map
143143
// we use the hashed variant since we iterate over it and check removal and additions on existing keys
144144
private final LiveVersionMap versionMap = new LiveVersionMap();
145-
// Records the last known generation during which LiverVersionMap was in unsafe mode. This indicates that only after this
145+
// Records the last known generation during which LiveVersionMap was in unsafe mode. This indicates that only after this
146146
// generation it is safe to rely on the LiveVersionMap for a real-time get.
147147
private final AtomicLong lastUnsafeSegmentGenerationForGets = new AtomicLong(-1);
148148

@@ -753,7 +753,7 @@ public GetResult get(
753753
DocumentParser documentParser,
754754
Function<Engine.Searcher, Engine.Searcher> searcherWrapper
755755
) {
756-
assert Objects.equals(get.uid().field(), IdFieldMapper.NAME) : get.uid().field();
756+
assert assertGetUsesIdField(get);
757757
try (ReleasableLock ignored = readLock.acquire()) {
758758
ensureOpen();
759759
if (get.realtime()) {
@@ -776,7 +776,7 @@ public GetResult getFromTranslog(
776776
DocumentParser documentParser,
777777
Function<Searcher, Searcher> searcherWrapper
778778
) {
779-
assert Objects.equals(get.uid().field(), IdFieldMapper.NAME) : get.uid().field();
779+
assert assertGetUsesIdField(get);
780780
try (ReleasableLock ignored = readLock.acquire()) {
781781
ensureOpen();
782782
return realtimeGetUnderLock(get, mappingLookup, documentParser, searcherWrapper);
@@ -790,6 +790,7 @@ protected GetResult realtimeGetUnderLock(
790790
Function<Engine.Searcher, Engine.Searcher> searcherWrapper
791791
) {
792792
assert readLock.isHeldByCurrentThread();
793+
assert get.realtime();
793794
final VersionValue versionValue;
794795
try (Releasable ignore = versionMap.acquireLock(get.uid().bytes())) {
795796
// we need to lock here to access the version map to do this truly in RT
@@ -3214,4 +3215,9 @@ public long getLastUnsafeSegmentGenerationForGets() {
32143215
public LiveVersionMap getLiveVersionMap() {
32153216
return versionMap;
32163217
}
3218+
3219+
private static boolean assertGetUsesIdField(Get get) {
3220+
assert Objects.equals(get.uid().field(), IdFieldMapper.NAME) : get.uid().field();
3221+
return true;
3222+
}
32173223
}

server/src/main/java/org/elasticsearch/index/get/ShardGetService.java

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,11 @@ private GetResult innerGet(
228228
boolean translogOnly
229229
) throws IOException {
230230
fetchSourceContext = normalizeFetchSourceContent(fetchSourceContext, gFields);
231-
try (Engine.GetResult get = getFromIndexShard(id, realtime, version, versionType, ifSeqNo, ifPrimaryTerm, translogOnly)) {
231+
var engineGet = new Engine.Get(realtime, realtime, id).version(version)
232+
.versionType(versionType)
233+
.setIfSeqNo(ifSeqNo)
234+
.setIfPrimaryTerm(ifPrimaryTerm);
235+
try (Engine.GetResult get = translogOnly ? indexShard.getFromTranslog(engineGet) : indexShard.get(engineGet)) {
232236
if (get == null) {
233237
return null;
234238
}
@@ -240,22 +244,6 @@ private GetResult innerGet(
240244
}
241245
}
242246

243-
private Engine.GetResult getFromIndexShard(
244-
String id,
245-
boolean realtime,
246-
long version,
247-
VersionType versionType,
248-
long ifSeqNo,
249-
long ifPrimaryTerm,
250-
boolean translogOnly
251-
) {
252-
var engineGet = new Engine.Get(realtime, realtime, id).version(version)
253-
.versionType(versionType)
254-
.setIfSeqNo(ifSeqNo)
255-
.setIfPrimaryTerm(ifPrimaryTerm);
256-
return translogOnly ? indexShard.getFromTranslog(engineGet) : indexShard.get(engineGet);
257-
}
258-
259247
private GetResult innerGetFetch(
260248
String id,
261249
String[] storedFields,

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

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

12281230
/**

server/src/test/java/org/elasticsearch/index/shard/ShardGetServiceTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import static org.elasticsearch.index.seqno.SequenceNumbers.UNASSIGNED_PRIMARY_TERM;
3131
import static org.elasticsearch.index.seqno.SequenceNumbers.UNASSIGNED_SEQ_NO;
3232
import static org.hamcrest.Matchers.equalTo;
33+
import static org.hamcrest.Matchers.greaterThan;
3334

3435
public class ShardGetServiceTests extends IndexShardTestCase {
3536

@@ -233,7 +234,7 @@ public void testGetFromTranslog() throws IOException {
233234
.getFromTranslog("2", new String[] { "foo" }, true, 1, VersionType.INTERNAL, FetchSourceContext.FETCH_SOURCE, false);
234235
assertNull(getResult);
235236
var lastUnsafeGeneration = engine.getLastUnsafeSegmentGenerationForGets();
236-
assertTrue(lastUnsafeGeneration > 0);
237+
assertThat(lastUnsafeGeneration, greaterThan(0L));
237238
assertTrue(LiveVersionMapTestUtils.isSafeAccessRequired(map));
238239
assertFalse(LiveVersionMapTestUtils.isUnsafe(map));
239240
// A flush shouldn't change the recorded last unsafe generation for gets

0 commit comments

Comments
 (0)