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/02/03 08:25:26 UTC
[camel] branch camel-3.20.x updated: CAMEL-19002: camel-jbang - Fix log command when lines do not start with timestamp
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.20.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.20.x by this push:
new dfa9ae88573 CAMEL-19002: camel-jbang - Fix log command when lines do not start with timestamp
dfa9ae88573 is described below
commit dfa9ae88573b983eb6af578a8c5d42c06c06300f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Feb 3 09:24:32 2023 +0100
CAMEL-19002: camel-jbang - Fix log command when lines do not start with timestamp
---
.../jbang/core/commands/action/CamelLogAction.java | 49 ++++++++++++++++------
.../jbang/core/commands/process/StopProcess.java | 4 +-
2 files changed, 38 insertions(+), 15 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java
index 75d934dadc6..4eee515eb80 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java
@@ -254,18 +254,52 @@ public class CamelLogAction extends ActionBaseCommand {
}
private void dumpLogFiles(Map<Long, Row> rows, int tail) {
+ Set<String> names = new HashSet<>();
List<String> lines = new ArrayList<>();
for (Row row : rows.values()) {
Queue<String> queue = row.fifo;
if (queue != null) {
for (String l : queue) {
+ names.add(row.name);
lines.add(row.name + "| " + l);
}
row.fifo.clear();
}
}
- // sort lines
- lines.sort(this::compareLogLine);
+
+ // only sort if there are multiple Camels running
+ if (names.size() > 1) {
+ // sort lines
+ final Map<String, String> lastTimestamp = new HashMap<>();
+ lines.sort((l1, l2) -> {
+ l1 = unescapeAnsi(l1);
+ l2 = unescapeAnsi(l2);
+
+ String n1 = StringHelper.before(l1, "| ");
+ String t1 = StringHelper.after(l1, "| ");
+ t1 = StringHelper.before(t1, " ");
+ String n2 = StringHelper.before(l2, "| ");
+ String t2 = StringHelper.after(l2, "| ");
+ t2 = StringHelper.before(t2, " ");
+
+ if (t1 == null) {
+ t1 = lastTimestamp.get(n1);
+ }
+ if (t2 == null) {
+ t2 = lastTimestamp.get(n2);
+ }
+ if (t1 == null && t2 == null) {
+ return 0;
+ } else if (t1 == null) {
+ return -1;
+ } else if (t2 == null) {
+ return 1;
+ }
+ lastTimestamp.put(n1, t1);
+ lastTimestamp.put(n2, t2);
+ return t1.compareTo(t2);
+ });
+ }
if (tail > 0) {
// cut according to tail
int pos = lines.size() - tail;
@@ -280,17 +314,6 @@ public class CamelLogAction extends ActionBaseCommand {
});
}
- private int compareLogLine(String l1, String l2) {
- l1 = unescapeAnsi(l1);
- l2 = unescapeAnsi(l2);
-
- String t1 = StringHelper.after(l1, "| ");
- t1 = StringHelper.before(t1, " ");
- String t2 = StringHelper.after(l2, "| ");
- t2 = StringHelper.before(t2, " ");
- return t1.compareTo(t2);
- }
-
protected void printLine(String name, String line) {
if (!prefix) {
name = null;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
index 15497702695..2d3eb07691f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
@@ -57,12 +57,12 @@ public class StopProcess extends ProcessBaseCommand {
File dir = new File(System.getProperty("user.home"), ".camel");
File pidFile = new File(dir, "" + pid);
if (pidFile.exists()) {
- System.out.println("Shutting down Camel integration (pid: " + pid + ")");
+ System.out.println("Shutting down Camel integration (PID: " + pid + ")");
FileUtil.deleteFile(pidFile);
}
if (kill) {
ProcessHandle.of(pid).ifPresent(ph -> {
- System.out.println("Killing Camel integration (pid: " + pid + ")");
+ System.out.println("Killing Camel integration (PID: " + pid + ")");
ph.destroyForcibly();
});
}