You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/04/17 08:48:39 UTC

[camel] branch main updated: CAMEL-19271: camel-jbang - Fix trace --latest

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 97d77b4d813 CAMEL-19271: camel-jbang - Fix trace --latest
97d77b4d813 is described below

commit 97d77b4d8132e24843834a57012b5dca8368378c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Apr 17 10:48:12 2023 +0200

    CAMEL-19271: camel-jbang - Fix trace --latest
---
 .../jbang/core/commands/action/CamelTraceAction.java    | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
index 6b449764e43..9c1799584a6 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java
@@ -38,6 +38,7 @@ import java.util.regex.Pattern;
 import org.apache.camel.catalog.impl.TimePatternConverter;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
+import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.TimeUtils;
@@ -262,25 +263,31 @@ public class CamelTraceAction extends ActionBaseCommand {
     private void positionTraceLatest(Map<Long, Pid> pids) throws Exception {
         for (Pid pid : pids.values()) {
             File file = getTraceFile(pid.pid);
-            boolean marked = false;
+            long position = -1;
             if (file.exists()) {
                 pid.reader = new LineNumberReader(new FileReader(file));
                 String line;
+                long counter = 0;
                 do {
                     line = pid.reader.readLine();
                     if (line != null) {
+                        counter++;
                         List<Row> rows = parseTraceLine(pid, line);
                         for (Row r : rows) {
                             if (r.first) {
-                                pid.reader.mark(8192);
-                                marked = true;
+                                position = counter;
                             }
                         }
                     }
                 } while (line != null);
             }
-            if (marked) {
-                pid.reader.reset();
+            if (position != -1) {
+                IOHelper.close(pid.reader);
+                // re-create reader and forward to position
+                pid.reader = new LineNumberReader(new FileReader(file));
+                while (--position > 0) {
+                    pid.reader.readLine();
+                }
             }
         }
     }