davsclaus opened a new pull request, #26939: URL: https://github.com/apache/camel/pull/26939
Fixes [CAMEL-25056](https://issues.apache.org/jira/browse/CAMEL-25056): bugs in the backlog debugger and tracer found in a deep review. Each fix has a test in `BacklogDebuggerEdgeCasesTest` or `BacklogTracerEdgeCasesTest` (camel-management) that fails without it. **Debugger** 1. **`stepOver()` when not single stepping switches off all breakpoints for good.** It set the step-over mode, which only the next single step resets; at a breakpoint (the first stop in `camel debug`) or at the last step there is none, so every breakpoint was skipped afterwards. Step over is now only set when single stepping, and reset when the single-stepped exchange completes. 2. **`setSuspendMode(true)` (`camel.debug.waitForAttach`) does not suspend anything**, and suspend mode from the environment turned off with `setSuspendMode(false)` kept every message waiting forever. Setting the suspend mode now suspends or resumes message processing. 3. **`removeAllBreakpoints()` only removes breakpoints with a suspended exchange.** 4. **Changing a breakpoint to a conditional one does not set its condition.** 5. **A breakpoint condition that fails to evaluate fails the exchange.** It now logs a WARN and the breakpoint is skipped. 6. **`setExchangePropertyOnBreakpoint`/`setExchangeVariableOnBreakpoint` keep the type of the header with the same name** instead of the property/variable. 7. **JMX `evaluateExpressionAtBreakpoint(nodeId, language, expression)` throws `NullPointerException`** when the node is not suspended or the result is null. **Tracer** 8. **A `traceFilter` with a colon is taken as a language name**: `${header.foo} == 'a:b'` or `${date:now}` failed with `NoSuchLanguageException`. A prefix is now only a language when it names one, and it is removed from the predicate (`simple:...` was always true before). 9. **A `traceFilter` that fails to evaluate fails the traced exchange.** 10. **`nodeLabel` in the JSON of a traced message is escaped twice** (`mock:a\/b` when read back), which the TUI showed as-is. 11. **The XML dump is not well-formed** when an endpoint uri, location, node id or key has `&` or `<`. **Not changed (for a later look)** - The latest message history queue may throw "Queue full" in append mode (reported by the review, not reproduced). - The history capture stays stuck when `tracePattern`/`traceFilter` excludes a route's first or last event. - A step breakpoint can replace another exchange suspended at the same node, and `step()` resumes exchanges suspended at other breakpoints. - The debugger is not prepared for shutdown, so suspended exchanges wait until the shutdown timeout. - `includeException` of the debugger is not used, and a refreshed suspended message loses its first/last flags. The whole `camel-core` and `camel-management` test suites pass (one known flaky file-reload test passed on rerun). _Claude Code on behalf of Claus Ibsen_ 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
