Skip to content

Commit 2940f9a

Browse files
authored
Accommodate hollow engine changes (#129535)
* Field infos calculation method inside Engine * buildSeqNoStats as static public method So it can be overriden in stateless if/as needed. Relates ES-11457
1 parent a952245 commit 2940f9a

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,15 @@ public ShardFieldStats shardFieldStats() {
262262
}
263263
}
264264

265+
/**
266+
* @throws AlreadyClosedException if the shard is closed
267+
*/
268+
public FieldInfos shardFieldInfos() {
269+
try (var searcher = acquireSearcher("field_has_value")) {
270+
return FieldInfos.getMergedFieldInfos(searcher.getIndexReader());
271+
}
272+
}
273+
265274
protected static ShardFieldStats shardFieldStats(List<LeafReaderContext> leaves) {
266275
int numSegments = 0;
267276
int totalFields = 0;
@@ -2407,6 +2416,13 @@ public final EngineConfig getEngineConfig() {
24072416
return engineConfig;
24082417
}
24092418

2419+
public static SeqNoStats buildSeqNoStats(EngineConfig config, SegmentInfos infos) {
2420+
final SequenceNumbers.CommitInfo seqNoStats = SequenceNumbers.loadSeqNoInfoFromLuceneCommit(infos.userData.entrySet());
2421+
long maxSeqNo = seqNoStats.maxSeqNo();
2422+
long localCheckpoint = seqNoStats.localCheckpoint();
2423+
return new SeqNoStats(maxSeqNo, localCheckpoint, config.getGlobalCheckpointSupplier().getAsLong());
2424+
}
2425+
24102426
/**
24112427
* Allows registering a listener for when the index shard is on a segment generation >= minGeneration.
24122428
*

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,6 @@ protected void closeNoLock(String reason, CountDownLatch closedLatch) {
243243
}
244244
}
245245

246-
private static SeqNoStats buildSeqNoStats(EngineConfig config, SegmentInfos infos) {
247-
final SequenceNumbers.CommitInfo seqNoStats = SequenceNumbers.loadSeqNoInfoFromLuceneCommit(infos.userData.entrySet());
248-
long maxSeqNo = seqNoStats.maxSeqNo();
249-
long localCheckpoint = seqNoStats.localCheckpoint();
250-
return new SeqNoStats(maxSeqNo, localCheckpoint, config.getGlobalCheckpointSupplier().getAsLong());
251-
}
252-
253246
private static TranslogStats translogStats(final EngineConfig config, final SegmentInfos infos) throws IOException {
254247
assert config.getTranslogConfig().hasTranslog();
255248
final String translogUuid = infos.getUserData().get(Translog.TRANSLOG_UUID_KEY);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4308,9 +4308,9 @@ public void afterRefresh(boolean didRefresh) {
43084308
}
43094309

43104310
private FieldInfos loadFieldInfos() {
4311-
try (Engine.Searcher hasValueSearcher = getEngine().acquireSearcher("field_has_value")) {
4312-
return FieldInfos.getMergedFieldInfos(hasValueSearcher.getIndexReader());
4313-
} catch (AlreadyClosedException ignore) {
4311+
try {
4312+
return getEngine().shardFieldInfos();
4313+
} catch (AlreadyClosedException ignored) {
43144314
// engine is closed - no update to FieldInfos is fine
43154315
}
43164316
return FieldInfos.EMPTY;

0 commit comments

Comments
 (0)