camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (CAMEL-7276) camel-quartz - use of management name to provide default scheduler name breaks context isolation
Date Sun, 09 Mar 2014 07:11:42 GMT

     [ 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)

Mime
View raw message