gnodet commented on code in PR #24985:
URL: https://github.com/apache/camel/pull/24985#discussion_r3655266400
##########
core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java:
##########
@@ -347,7 +352,7 @@ protected void dumpTrace(String out, Object node) {
}
}
- protected boolean shouldTracePattern(NamedNode definition) {
+ protected boolean shouldTracePattern(NamedNode definition, String[]
patterns) {
Review Comment:
_Claude Code on behalf of gnodet_
Acknowledged — you're right that `shouldTracePattern` is `protected`, not
`private`. The signature change is technically a source/binary break for
downstream subclasses. Since no known subclasses exist and the class is in
`camel-base-engine` (internal), the practical risk is very low, but it's
correctly flagged. Thank you for the correction.
##########
core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java:
##########
@@ -478,37 +484,41 @@ public void setTraceTemplates(boolean traceTemplates) {
@Override
public String getTracePattern() {
- return tracePattern;
+ TracePatternHolder ph = tracePatternHolder;
+ return ph != null ? ph.tracePattern() : null;
}
@Override
public void setTracePattern(String tracePattern) {
- this.tracePattern = tracePattern;
if (tracePattern != null) {
// the pattern can have multiple nodes separated by comma
- this.patterns = tracePattern.split(",");
+ this.tracePatternHolder = new TracePatternHolder(tracePattern,
tracePattern.split(","));
} else {
- this.patterns = null;
+ this.tracePatternHolder = null;
}
}
@Override
public String getTraceFilter() {
- return traceFilter;
+ TraceFilterHolder fh = traceFilterHolder;
+ return fh != null ? fh.traceFilter() : null;
}
@Override
public void setTraceFilter(String filter) {
- this.traceFilter = filter;
if (filter != null) {
// assume simple language
+ Predicate p;
String name = StringHelper.before(filter, ":");
if (name != null) {
- predicate =
camelContext.resolveLanguage(name).createPredicate(filter);
+ p = camelContext.resolveLanguage(name).createPredicate(filter);
} else {
// use simple language by default
- predicate = simple.createPredicate(filter);
+ p = simple.createPredicate(filter);
}
+ this.traceFilterHolder = new TraceFilterHolder(filter, p);
+ } else {
+ this.traceFilterHolder = null;
Review Comment:
_Claude Code on behalf of gnodet_
Good catch — added `BacklogTracerFilterClearTest` in d999aab0c95. The test
verifies the full lifecycle: set filter → trace with filter → clear filter →
trace without filter. It confirms the stale-predicate bug is fixed by the
holder pattern.
--
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]