Browse Source

Introduce constant for empty translog snapshot (#95545)

Just making this a little shorter and exposing this for reuse in
stateless.
Armin Braun 2 years ago
parent
commit
d6123a4569

+ 3 - 20
server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java

@@ -361,7 +361,7 @@ public class ReadOnlyEngine extends Engine {
         boolean singleConsumer,
         boolean accessStats
     ) {
-        return newEmptySnapshot();
+        return Translog.Snapshot.EMPTY;
     }
 
     @Override
@@ -515,8 +515,8 @@ public class ReadOnlyEngine extends Engine {
     public Engine recoverFromTranslog(final TranslogRecoveryRunner translogRecoveryRunner, final long recoverUpToSeqNo) {
         try (ReleasableLock lock = readLock.acquire()) {
             ensureOpen();
-            try (Translog.Snapshot snapshot = newEmptySnapshot()) {
-                translogRecoveryRunner.run(this, snapshot);
+            try {
+                translogRecoveryRunner.run(this, Translog.Snapshot.EMPTY);
             } catch (final Exception e) {
                 throw new EngineException(shardId, "failed to recover from empty translog snapshot", e);
             }
@@ -543,23 +543,6 @@ public class ReadOnlyEngine extends Engine {
         return false;
     }
 
-    private static Translog.Snapshot newEmptySnapshot() {
-        return new Translog.Snapshot() {
-            @Override
-            public void close() {}
-
-            @Override
-            public int totalOperations() {
-                return 0;
-            }
-
-            @Override
-            public Translog.Operation next() {
-                return null;
-            }
-        };
-    }
-
     @Override
     public long getMaxSeqNoOfUpdatesOrDeletes() {
         return seqNoStats.getMaxSeqNo();

+ 15 - 0
server/src/main/java/org/elasticsearch/index/translog/Translog.java

@@ -987,6 +987,21 @@ public class Translog extends AbstractIndexShardComponent implements IndexShardC
      */
     public interface Snapshot extends Closeable {
 
+        Snapshot EMPTY = new Snapshot() {
+            @Override
+            public void close() {}
+
+            @Override
+            public int totalOperations() {
+                return 0;
+            }
+
+            @Override
+            public Operation next() {
+                return null;
+            }
+        };
+
         /**
          * The total estimated number of operations in the snapshot.
          */