[
https://issues.apache.org/jira/browse/CAMEL-7276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-7276:
----------------------------------
Assignee: Claus Ibsen
> camel-quartz - use of management name to provide default scheduler name
> breaks context isolation
> ------------------------------------------------------------------------------------------------
>
> Key: CAMEL-7276
> URL: https://issues.apache.org/jira/browse/CAMEL-7276
> Project: Camel
> Issue Type: Bug
> Components: camel-quartz
> Affects Versions: 2.12.3
> Reporter: Bob Browning
> Assignee: Claus Ibsen
>
> When using the camel-quartz component in an unmanged context with multiple
> camel contexts, for example in a JUnit test case, causes the scheduler to be
> created with the instance name "DefaultQuartzScheduler" which is then shared
> across all camel context's within the same jvm.
> This is in contradiction of the previous behaviour that uses
> `getCamelContext.getName()` which isolates the scheduler by denoting that the
> default instance is specific to the camel context.
> {code}
> package org.apache.camel.component.quartz;
> import org.apache.camel.CamelContext;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.management.JmxSystemPropertyKeys;
> import org.junit.Test;
> import org.quartz.Scheduler;
> import org.quartz.SchedulerException;
> import static org.junit.Assert.assertNotEquals;
> import static org.junit.Assert.assertNotSame;
> /**
> * Test regression of camel-context isolation of default scheduler instance
> introduced in CAMEL-7034.
> */
> public class QuartzComponentCamelContextSchedulerIsolationTest {
> @Test
> public void testSchedulerIsolation_unmanaged() throws Exception {
> disableJMX();
> testSchedulerIsolation();
> }
> @Test
> public void testSchedulerIsolation_managed() throws Exception {
> enableJMX();
> testSchedulerIsolation();
> }
> private void testSchedulerIsolation() throws Exception {
> CamelContext context = createCamelContext();
> context.start();
> CamelContext anotherContext = createCamelContext();
> assertNotEquals(anotherContext.getName(), context.getName());
> assertNotEquals(anotherContext, context);
> assertNotSame(getDefaultScheduler(context),
> getDefaultScheduler(anotherContext));
> }
> /**
> * Create a new camel context instance.
> */
> private DefaultCamelContext createCamelContext() {
> return new DefaultCamelContext();
> }
> /**
> * Get the quartz component for the provided camel context.
> */
> private QuartzComponent getQuartzComponent(CamelContext context) {
> return context.getComponent("quartz", QuartzComponent.class);
> }
> /**
> * Get the default scheduler for the provided camel context.
> */
> private Scheduler getDefaultScheduler(CamelContext context) throws
> SchedulerException {
> return getQuartzComponent(context).getFactory().getScheduler();
> }
> /**
> * Disables the JMX agent.
> */
> private void disableJMX() {
> System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
> }
> /**
> * Enables the JMX agent.
> */
> private void enableJMX() {
> System.setProperty(JmxSystemPropertyKeys.DISABLED, "false");
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)