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

davsclaus pushed a commit to branch fix/camel-tui-tamboui-improvements
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f7ebf522bc554dd399e8f14372262c08b5c61465
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri May 15 17:26:01 2026 +0200

    CAMEL-23514: Fix O(n²) getTraceExchangeIds and remove no-op 
runOnRenderThread
    
    Replace List.contains() loop with LinkedHashSet for O(1) deduplication while
    preserving insertion order. Remove the empty runOnRenderThread lambda that 
was
    called after background refresh with no effect.
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 .../camel/dsl/jbang/core/commands/tui/CamelMonitor.java      | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
index a1c670e97154..e6422621246b 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -2444,13 +2445,14 @@ public class CamelMonitor extends CamelCommand {
 
     private List<String> getTraceExchangeIds() {
         List<TraceEntry> current = traces.get();
-        List<String> ids = new ArrayList<>();
+        // LinkedHashSet: O(1) contains, preserves first-seen insertion order
+        LinkedHashSet<String> seen = new LinkedHashSet<>();
         for (TraceEntry e : current) {
-            if (e.exchangeId != null && !ids.contains(e.exchangeId)) {
-                ids.add(e.exchangeId);
+            if (e.exchangeId != null) {
+                seen.add(e.exchangeId);
             }
         }
-        return ids;
+        return new ArrayList<>(seen);
     }
 
     private List<TraceEntry> getTraceSteps(String exchangeId) {
@@ -2913,8 +2915,6 @@ public class CamelMonitor extends CamelCommand {
             } finally {
                 refreshInProgress.set(false);
             }
-            runner.runOnRenderThread(() -> {
-            });
         });
     }
 

Reply via email to