src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java
changeset 59274 eb3e2a5c2bcd
parent 59226 a0f39cc47387
child 59310 72f3dd43dd28
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java	Tue Nov 26 15:21:37 2019 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java	Tue Nov 26 17:00:57 2019 +0100
@@ -202,7 +202,7 @@
             long lastValid = absoluteChunkEnd;
             long metadataPoistion = chunkHeader.getMetataPosition();
             long contantPosition = chunkHeader.getConstantPoolPosition();
-            chunkFinished = awaitUpdatedHeader(absoluteChunkEnd);
+            chunkFinished = awaitUpdatedHeader(absoluteChunkEnd, configuration.filterEnd);
             if (chunkFinished) {
                 Logger.log(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO, "At chunk end");
                 return null;
@@ -279,11 +279,14 @@
         }
     }
 
-    private boolean awaitUpdatedHeader(long absoluteChunkEnd) throws IOException {
+    private boolean awaitUpdatedHeader(long absoluteChunkEnd, long filterEnd) throws IOException {
         if (Logger.shouldLog(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO)) {
             Logger.log(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO, "Waiting for more data (streaming). Read so far: " + chunkHeader.getChunkSize() + " bytes");
         }
         while (true) {
+            if (chunkHeader.getLastNanos() > filterEnd)  {
+              return true;
+            }
             chunkHeader.refresh();
             if (absoluteChunkEnd != chunkHeader.getEnd()) {
                 return false;