diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkHeader.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkHeader.java
index 54687725b7461..550878888cd74 100644
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkHeader.java
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkHeader.java
@@ -109,14 +109,19 @@ private ChunkHeader(RecordingInput input, long absoluteChunkStart, long id) thro
         input.position(absoluteEventStart);
     }
 
+    private byte readFileState() throws IOException {
+        byte fs;
+        input.positionPhysical(absoluteChunkStart + FILE_STATE_POSITION);
+        while ((fs = input.readPhysicalByte()) == UPDATING_CHUNK_HEADER) {
+            Utils.takeNap(1);
+            input.positionPhysical(absoluteChunkStart + FILE_STATE_POSITION);
+        }
+        return fs;
+    }
+
     public void refresh() throws IOException {
         while (true) {
-            byte fileState1;
-            input.positionPhysical(absoluteChunkStart + FILE_STATE_POSITION);
-            while ((fileState1 = input.readPhysicalByte()) == UPDATING_CHUNK_HEADER) {
-                Utils.takeNap(1);
-                input.positionPhysical(absoluteChunkStart + FILE_STATE_POSITION);
-            }
+            byte fileState1 = readFileState();
             input.positionPhysical(absoluteChunkStart + CHUNK_SIZE_POSITION);
             long chunkSize = input.readPhysicalLong();
             long constantPoolPosition = input.readPhysicalLong();
@@ -169,10 +174,9 @@ public void awaitFinished() throws IOException {
         }
         long pos = input.position();
         try {
-            input.positionPhysical(absoluteChunkStart + FILE_STATE_POSITION);
             while (true) {
-                byte filestate = input.readPhysicalByte();
-                if (filestate == 0) {
+                byte fileState = readFileState();
+                if (fileState == 0) {
                     finished = true;
                     return;
                 }