diff --git a/server/src/main/java/org/opensearch/index/engine/InternalEngine.java b/server/src/main/java/org/opensearch/index/engine/InternalEngine.java index 88b58403a8ac6..846f122635dc9 100644 --- a/server/src/main/java/org/opensearch/index/engine/InternalEngine.java +++ b/server/src/main/java/org/opensearch/index/engine/InternalEngine.java @@ -113,6 +113,7 @@ import org.opensearch.index.translog.TranslogStats; import org.opensearch.index.translog.listener.CompositeTranslogEventListener; import org.opensearch.index.translog.listener.TranslogEventListener; +import org.opensearch.index.translog.transfer.TranslogUploadFailedException; import org.opensearch.search.suggest.completion.CompletionStats; import org.opensearch.threadpool.ThreadPool; @@ -2032,11 +2033,14 @@ private void refreshLastCommittedSegmentInfos() { } @Override - public void rollTranslogGeneration() throws EngineException { + public void rollTranslogGeneration() throws EngineException, TranslogUploadFailedException { try (ReleasableLock ignored = readLock.acquire()) { ensureOpen(); translogManager().getTranslog().rollGeneration(); translogManager().getTranslog().trimUnreferencedReaders(); + } catch (TranslogUploadFailedException e) { + // Do not trigger the translogEventListener as it fails the Engine while this is only an issue with remote upload + throw e; } catch (AlreadyClosedException e) { failOnTragicEvent(e); throw e;