[
https://issues.apache.org/jira/browse/ARTEMIS-1742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Bertram resolved ARTEMIS-1742.
-------------------------------------
Resolution: Not A Problem
> 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
> Priority: Major
> 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)