diff --git a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest1.xml b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest1.xml index a3f6e123faf0a..130ccae72a5c9 100644 --- a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest1.xml +++ b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest1.xml @@ -61,7 +61,7 @@ - + diff --git a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest2.xml b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest2.xml index 83c1a343febed..14aa56f83d793 100644 --- a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest2.xml +++ b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeCronExpressionTest2.xml @@ -61,7 +61,7 @@ - + diff --git a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest1.xml b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest1.xml index b906f210e2529..22386dfcb6b79 100644 --- a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest1.xml +++ b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest1.xml @@ -61,7 +61,7 @@ - + diff --git a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest2.xml b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest2.xml index e6b017e93e73e..a1354398d46d8 100644 --- a/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest2.xml +++ b/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest2.xml @@ -61,7 +61,7 @@ - + diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java index 059388f860d5e..90fc97af08234 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/BacklogTracer.java @@ -62,8 +62,12 @@ public class BacklogTracer extends ServiceSupport implements org.apache.camel.sp public static final int MAX_BACKLOG_SIZE = 1000; private final CamelContext camelContext; private final Language simple; - private boolean enabled; - private boolean standby; + // enabled, standby, and activityEnabled (further below) are toggled at runtime via + // JMX/management APIs while routing threads read them in shouldTrace() and traceEvent(). + // Other boolean fields (removeOnDump, bodyIncludeStreams, traceRests, etc.) are set during + // initialization and do not change while routes are processing, so they do not need volatile. + private volatile boolean enabled; + private volatile boolean standby; private final AtomicLong traceCounter = new AtomicLong(); // use a queue with an upper limit to avoid storing too many messages private final Queue queue = new LinkedBlockingQueue<>(MAX_BACKLOG_SIZE); @@ -87,7 +91,8 @@ public class BacklogTracer extends ServiceSupport implements org.apache.camel.sp private boolean includeExchangeProperties = true; private boolean includeExchangeVariables = true; private boolean includeException = true; - private boolean activityEnabled; + // volatile: toggled at runtime via JMX, same rationale as enabled/standby above + private volatile boolean activityEnabled; private boolean traceRests; private boolean traceTemplates; // a pattern to filter tracing nodes