Andrea Tarocchi created ARTEMIS-1742:
----------------------------------------

             Summary: possible problem with embedded broker and vm 
acceptor/connector
                 Key: ARTEMIS-1742
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1742
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: Broker
    Affects Versions: 2.3.0
            Reporter: Andrea Tarocchi
         Attachments: camel-jms.zip

In camel-jms component we keep having some random failing tests using embedded 
artemis broker.

Basically the same tests are run using embedded artemis broker and embedded amq 
broker and the same test is re ran up to 3 times if it has a failure (in that 
case is marked as flaky), we keep experiencing flaky tests for artemis and not 
for amq.

I've attached a simplified as possible reproducer which run the same test 50 
times only using artemis embedded broker (is a pretty simple write and read 
from a temp queue).

Running it a couple of times with: \{{mvn clean test}} should manifest the 
flaky behaviour.

Might be we init/destroy the embedded broker in the wrong way?
{code:java}
    public ConnectionFactory createConnectionFactory(final int 
maximumRedeliveries, final boolean persistent) {
        int id = BROKER_COUNT.incrementAndGet();
        String baseDir = DATA_DIR + File.separator + id;
        final Configuration configuration;
        try {
            configuration = new ConfigurationImpl()
                .setPersistenceEnabled(persistent)
                .setSecurityEnabled(false)
                .setBindingsDirectory(baseDir + File.separator + "bindings")
                .setJournalDirectory(baseDir + File.separator + "journal")
                .setPagingDirectory(baseDir + File.separator + "paging")
                .setLargeMessagesDirectory(baseDir + File.separator + 
"largemessages")


                    .setCheckForLiveServer(false)
                    .setEnabledAsyncConnectionExecution(false)
                    .setManagementNotificationAddress( new 
SimpleString("activemq.notifications") )


                    .setCheckForLiveServer(false)
                    .setClusterConfigurations( new ArrayList<>() )


                .addAcceptorConfiguration("invm", "vm://" + id)
                .addConnectorConfiguration("invm", "vm://" + id);
        } catch (final Exception e) {
            throw new ExceptionInInitializerError(e);
        }


        final ConnectionFactoryConfiguration cfConfig = new 
ConnectionFactoryConfigurationImpl().setName("cf")
            .setConnectorNames("invm").setBindings("cf");


        final JMSConfiguration jmsConfig = new JMSConfigurationImpl()
            .setConnectionFactoryConfigurations(singletonList(cfConfig));


        EmbeddedJMS broker = new 
EmbeddedJMS().setConfiguration(configuration).setJmsConfiguration(jmsConfig);


        try {
            broker.start();
        } catch (final Exception e) {
            throw new ExceptionInInitializerError(e);
        }

        final AddressSettings addressSettings = new AddressSettings()
                                                        
.setMaxDeliveryAttempts(maximumRedeliveries)
                                                        
.setDeadLetterAddress(new SimpleString("jms.queue.deadletter"))
                                                        .setExpiryAddress(new 
SimpleString("jms.queue.expired"))
                .setAutoCreateAddresses(true)
                                                        
.setAutoCreateQueues(true);
        broker.getActiveMQServer().getAddressSettingsRepository().addMatch("#", 
addressSettings);

        TransportConfiguration transportConfigs = new 
TransportConfiguration(InVMConnectorFactory.class.getName());
        
transportConfigs.getParams().put(TransportConstants.SERVER_ID_PROP_NAME, id);
        ServerLocator serviceLocator = 
ActiveMQClient.createServerLocator(false, transportConfigs);

        ActiveMQConnectionFactory acf = new 
ActiveMQConnectionFactory(serviceLocator);

        return acf;
    }
{code}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to