diff --git a/libs/core/src/main/java/org/opensearch/core/common/io/stream/FilterStreamInput.java b/libs/core/src/main/java/org/opensearch/core/common/io/stream/FilterStreamInput.java
index a6e49567ac7d5..c8747e05f5a20 100644
--- a/libs/core/src/main/java/org/opensearch/core/common/io/stream/FilterStreamInput.java
+++ b/libs/core/src/main/java/org/opensearch/core/common/io/stream/FilterStreamInput.java
@@ -80,6 +80,11 @@ public void reset() throws IOException {
         delegate.reset();
     }
 
+    @Override
+    public void mark(int readlimit) {
+        delegate.mark(readlimit);
+    }
+
     @Override
     public int read() throws IOException {
         return delegate.read();
diff --git a/libs/core/src/test/java/org/opensearch/core/common/io/stream/FilterStreamInputTests.java b/libs/core/src/test/java/org/opensearch/core/common/io/stream/FilterStreamInputTests.java
index a044586e095e3..cb3ccb217af30 100644
--- a/libs/core/src/test/java/org/opensearch/core/common/io/stream/FilterStreamInputTests.java
+++ b/libs/core/src/test/java/org/opensearch/core/common/io/stream/FilterStreamInputTests.java
@@ -12,6 +12,7 @@
 import org.opensearch.core.common.bytes.BytesReference;
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 
 /** test the FilterStreamInput using the same BaseStreamTests */
 public class FilterStreamInputTests extends BaseStreamTests {
@@ -21,4 +22,23 @@ protected StreamInput getStreamInput(BytesReference bytesReference) throws IOExc
         return new FilterStreamInput(StreamInput.wrap(br.bytes, br.offset, br.length)) {
         };
     }
+
+    public void testMarkAndReset() throws IOException {
+        FilterStreamInputTests filterStreamInputTests = new FilterStreamInputTests();
+
+        ByteBuffer buffer = ByteBuffer.wrap(new byte[20]);
+        for (int i = 0; i < buffer.limit(); i++) {
+            buffer.put((byte) i);
+        }
+        buffer.rewind();
+        BytesReference bytesReference = BytesReference.fromByteBuffer(buffer);
+        StreamInput streamInput = filterStreamInputTests.getStreamInput(bytesReference);
+        streamInput.read();
+        streamInput.mark(-1);
+        int int1 = streamInput.read();
+        int int2 = streamInput.read();
+        streamInput.reset();
+        assertEquals(int1, streamInput.read());
+        assertEquals(int2, streamInput.read());
+    }
 }