You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/08/06 15:12:54 UTC
[1/2] activemq-artemis git commit: This closes #2214
Repository: activemq-artemis
Updated Branches:
refs/heads/master 3bb7df2de -> 869ad80a2
This closes #2214
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/869ad80a
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/869ad80a
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/869ad80a
Branch: refs/heads/master
Commit: 869ad80a20b401be3e379c4c0a2147e02cd4d7ee
Parents: 3bb7df2 b710df7
Author: Clebert Suconic <cl...@apache.org>
Authored: Mon Aug 6 11:12:46 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Aug 6 11:12:46 2018 -0400
----------------------------------------------------------------------
.../core/settings/impl/AddressSettings.java | 17 +++++--
tests/compatibility-tests/pom.xml | 52 ++++++++++++++++++++
.../artemis/tests/compatibility/GroovyRun.java | 2 +
.../main/resources/servers/artemisServer.groovy | 41 ++++++++++++---
.../compatibility/JournalCompatibilityTest.java | 16 +++---
.../tests/compatibility/VersionedBaseTest.java | 5 ++
6 files changed, 117 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-2011 Fixing
incompatibility of AddressSettings encode between versions
Posted by cl...@apache.org.
ARTEMIS-2011 Fixing incompatibility of AddressSettings encode between versions
To fix this I added a retry on AddressSettings using code that's closer to the original version
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b710df78
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b710df78
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b710df78
Branch: refs/heads/master
Commit: b710df7844c36633566d3f93f2707a378e4c5af8
Parents: 3bb7df2
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Aug 3 18:19:05 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Aug 6 11:12:46 2018 -0400
----------------------------------------------------------------------
.../core/settings/impl/AddressSettings.java | 17 +++++--
tests/compatibility-tests/pom.xml | 52 ++++++++++++++++++++
.../artemis/tests/compatibility/GroovyRun.java | 2 +
.../main/resources/servers/artemisServer.groovy | 41 ++++++++++++---
.../compatibility/JournalCompatibilityTest.java | 16 +++---
.../tests/compatibility/VersionedBaseTest.java | 5 ++
6 files changed, 117 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
index f2eb488..7509264 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
@@ -20,10 +20,10 @@ import java.io.Serializable;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.core.journal.EncodingSupport;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.settings.Mergeable;
import org.apache.activemq.artemis.utils.BufferHelper;
import org.apache.activemq.artemis.utils.DataConstants;
@@ -729,6 +729,17 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
@Override
public void decode(ActiveMQBuffer buffer) {
+ int original = buffer.readerIndex();
+ try {
+ decode(buffer, false);
+ } catch (Throwable e) {
+ buffer.readerIndex(original);
+ // Try a compatible version where the wire was broken
+ decode(buffer, true);
+ }
+ }
+
+ public void decode(ActiveMQBuffer buffer, boolean tryCompatible) {
SimpleString policyStr = buffer.readNullableSimpleString();
if (policyStr != null) {
@@ -791,7 +802,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
autoDeleteQueues = BufferHelper.readNullableBoolean(buffer);
- policyStr = buffer.readNullableSimpleString();
+ policyStr = tryCompatible ? null : buffer.readNullableSimpleString();
if (policyStr != null) {
configDeleteQueues = DeletionPolicy.valueOf(policyStr.toString());
@@ -803,7 +814,7 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
autoDeleteAddresses = BufferHelper.readNullableBoolean(buffer);
- policyStr = buffer.readNullableSimpleString();
+ policyStr = tryCompatible ? null : buffer.readNullableSimpleString();
if (policyStr != null) {
configDeleteAddresses = DeletionPolicy.valueOf(policyStr.toString());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/tests/compatibility-tests/pom.xml
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/pom.xml b/tests/compatibility-tests/pom.xml
index f4edcd6..a889303 100644
--- a/tests/compatibility-tests/pom.xml
+++ b/tests/compatibility-tests/pom.xml
@@ -351,6 +351,50 @@
</configuration>
</execution>
<execution>
+ <phase>compile</phase>
+ <goals>
+ <goal>dependency-scan</goal>
+ </goals>
+ <id>210-check</id>
+ <configuration>
+ <libListWithDeps>
+ <arg>org.apache.activemq:artemis-jms-server:2.1.0</arg>
+ <arg>org.apache.activemq:artemis-jms-client:2.1.0</arg>
+ <arg>org.apache.activemq:artemis-cli:2.1.0</arg>
+ <arg>org.apache.activemq:artemis-hornetq-protocol:2.1.0</arg>
+ <arg>org.apache.activemq:artemis-amqp-protocol:2.1.0</arg>
+ <arg>org.apache.activemq:artemis-hornetq-protocol:2.1.0</arg>
+ <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
+ </libListWithDeps>
+ <libList>
+ <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
+ </libList>
+ <variableName>ARTEMIS-210</variableName>
+ </configuration>
+ </execution>
+ <execution>
+ <phase>compile</phase>
+ <goals>
+ <goal>dependency-scan</goal>
+ </goals>
+ <id>200-check</id>
+ <configuration>
+ <libListWithDeps>
+ <arg>org.apache.activemq:artemis-jms-server:2.0.0</arg>
+ <arg>org.apache.activemq:artemis-jms-client:2.0.0</arg>
+ <arg>org.apache.activemq:artemis-cli:2.0.0</arg>
+ <arg>org.apache.activemq:artemis-hornetq-protocol:2.0.0</arg>
+ <arg>org.apache.activemq:artemis-amqp-protocol:2.0.0</arg>
+ <arg>org.apache.activemq:artemis-hornetq-protocol:2.0.0</arg>
+ <arg>org.codehaus.groovy:groovy-all:${groovy.version}</arg>
+ </libListWithDeps>
+ <libList>
+ <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
+ </libList>
+ <variableName>ARTEMIS-200</variableName>
+ </configuration>
+ </execution>
+ <execution>
<id>140-check</id>
<phase>compile</phase>
<goals>
@@ -454,6 +498,14 @@
<value>${ARTEMIS-SNAPSHOT}</value>
</property>
<property>
+ <name>ARTEMIS-200</name>
+ <value>${ARTEMIS-200}</value>
+ </property>
+ <property>
+ <name>ARTEMIS-210</name>
+ <value>${ARTEMIS-210}</value>
+ </property>
+ <property>
<name>ARTEMIS-240</name>
<value>${ARTEMIS-240}</value>
</property>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
index 46b6cec..5efa3d3 100644
--- a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
+++ b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
@@ -30,6 +30,8 @@ public class GroovyRun {
public static final String SNAPSHOT = "ARTEMIS-SNAPSHOT";
public static final String ONE_FIVE = "ARTEMIS-155";
public static final String ONE_FOUR = "ARTEMIS-140";
+ public static final String TWO_ZERO = "ARTEMIS-200";
+ public static final String TWO_ONE = "ARTEMIS-210";
public static final String TWO_FOUR = "ARTEMIS-240";
public static final String HORNETQ_235 = "HORNETQ-235";
public static final String HORNETQ_247 = "HORNETQ-247";
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/tests/compatibility-tests/src/main/resources/servers/artemisServer.groovy
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/main/resources/servers/artemisServer.groovy b/tests/compatibility-tests/src/main/resources/servers/artemisServer.groovy
index c8cc93b..4886a5d 100644
--- a/tests/compatibility-tests/src/main/resources/servers/artemisServer.groovy
+++ b/tests/compatibility-tests/src/main/resources/servers/artemisServer.groovy
@@ -1,4 +1,7 @@
package servers
+
+import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -17,15 +20,11 @@ package servers
*/
// starts an artemis server
-
-import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.server.JournalType
-import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
-import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
-import org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl;
+import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings
+import org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl
import org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS
-import org.apache.activemq.artemis.tests.compatibility.GroovyRun;
-
String folder = arg[0];
String id = arg[1];
@@ -63,3 +62,31 @@ server.start();
server.getJMSServerManager().createTopic(true, "topic");
server.getJMSServerManager().createQueue(true, "queue", null, true);
+
+if (setAddressSettings) {
+
+ // this is to force records that will have pittfals between versions
+ server.getJMSServerManager().getActiveMQServer().getActiveMQServerControl().
+ addAddressSettings("ad1", //@Parameter(desc = "an address match", name = "addressMatch") String addressMatch,
+ "dla", // @Parameter(desc = "the dead letter address setting", name = "DLA") String DLA,
+ "exp", //@Parameter(desc = "the expiry address setting", name = "expiryAddress") String expiryAddress,
+ 0l, //@Parameter(desc = "the expiry delay setting", name = "expiryDelay") long expiryDelay,
+ false, //@Parameter(desc = "are any queues created for this address a last value queue", name = "lastValueQueue") boolean lastValueQueue,
+ 1, //@Parameter(desc = "the delivery attempts", name = "deliveryAttempts") int deliveryAttempts,
+ 10 * 1024 * 1024, //@Parameter(desc = "the max size in bytes", name = "maxSizeBytes") long maxSizeBytes,
+ 1024 * 1024, //@Parameter(desc = "the page size in bytes", name = "pageSizeBytes") int pageSizeBytes,
+ 3, //@Parameter(desc = "the max number of pages in the soft memory cache", name = "pageMaxCacheSize") int pageMaxCacheSize,
+ 0l, //@Parameter(desc = "the redelivery delay", name = "redeliveryDelay") long redeliveryDelay,
+ 0, //@Parameter(desc = "the redelivery delay multiplier", name = "redeliveryMultiplier") double redeliveryMultiplier,
+ 0, //@Parameter(desc = "the maximum redelivery delay", name = "maxRedeliveryDelay") long maxRedeliveryDelay,
+ 0, //@Parameter(desc = "the redistribution delay", name = "redistributionDelay") long redistributionDelay,
+ false, //@Parameter(desc = "do we send to the DLA when there is no where to route the message", name = "sendToDLAOnNoRoute") boolean sendToDLAOnNoRoute,
+ "BLOCK", //@Parameter(desc = "the policy to use when the address is full", name = "addressFullMessagePolicy") String addressFullMessagePolicy,
+ 1000, //@Parameter(desc = "when a consumer falls below this threshold in terms of messages consumed per second it will be considered 'slow'", name = "slowConsumerThreshold") long slowConsumerThreshold,
+ 1000, //@Parameter(desc = "how often (in seconds) to check for slow consumers", name = "slowConsumerCheckPeriod") long slowConsumerCheckPeriod,
+ "NOTIFY", //@Parameter(desc = "the policy to use when a slow consumer is detected", name = "slowConsumerPolicy") String slowConsumerPolicy,
+ true, //@Parameter(desc = "allow queues to be created automatically", name = "autoCreateJmsQueues") boolean autoCreateJmsQueues,
+ true, // @Parameter(desc = "allow auto-created queues to be deleted automatically", name = "autoDeleteJmsQueues") boolean autoDeleteJmsQueues,
+ true, //@Parameter(desc = "allow topics to be created automatically", name = "autoCreateJmsTopics") boolean autoCreateJmsTopics,
+ true) //@Parameter(desc = "allow auto-created topics to be deleted automatically", name = "autoDeleteJmsTopics") boolean autoDeleteJmsTopics) throws Exception;
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
index 171e721..e63f70b 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JournalCompatibilityTest.java
@@ -19,6 +19,8 @@ package org.apache.activemq.artemis.tests.compatibility;
import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT;
import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.TWO_FOUR;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.TWO_ONE;
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.TWO_ZERO;
import java.util.ArrayList;
import java.util.Collection;
@@ -62,6 +64,8 @@ public class JournalCompatibilityTest extends VersionedBaseTest {
// combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, ONE_FIVE});
// combinations.add(new Object[]{ONE_FIVE, ONE_FIVE, ONE_FIVE});
+ combinations.add(new Object[]{null, TWO_ZERO, SNAPSHOT});
+ combinations.add(new Object[]{null, TWO_ONE, SNAPSHOT});
combinations.add(new Object[]{null, TWO_FOUR, SNAPSHOT});
// the purpose on this one is just to validate the test itself.
/// if it can't run against itself it won't work at all
@@ -94,12 +98,12 @@ public class JournalCompatibilityTest extends VersionedBaseTest {
@Test
public void testSendReceive() throws Throwable {
setVariable(senderClassloader, "persistent", true);
- startServer(serverFolder.getRoot(), senderClassloader, "journalTest");
+ startServer(serverFolder.getRoot(), senderClassloader, "journalTest", null, true);
evaluate(senderClassloader, "meshTest/sendMessages.groovy", server, sender, "sendAckMessages");
stopServer(senderClassloader);
setVariable(receiverClassloader, "persistent", true);
- startServer(serverFolder.getRoot(), receiverClassloader, "journalTest");
+ startServer(serverFolder.getRoot(), receiverClassloader, "journalTest", null, false);
setVariable(receiverClassloader, "latch", null);
evaluate(receiverClassloader, "meshTest/sendMessages.groovy", server, receiver, "receiveMessages");
@@ -112,12 +116,12 @@ public class JournalCompatibilityTest extends VersionedBaseTest {
@Test
public void testSendReceiveQueueMetrics() throws Throwable {
setVariable(senderClassloader, "persistent", true);
- startServer(serverFolder.getRoot(), senderClassloader, "journalTest");
+ startServer(serverFolder.getRoot(), senderClassloader, "journalTest", null, true);
evaluate(senderClassloader, "meshTest/sendMessages.groovy", server, sender, "sendAckMessages");
stopServer(senderClassloader);
setVariable(receiverClassloader, "persistent", true);
- startServer(serverFolder.getRoot(), receiverClassloader, "journalTest");
+ startServer(serverFolder.getRoot(), receiverClassloader, "journalTest", null, false);
setVariable(receiverClassloader, "latch", null);
evaluate(receiverClassloader, "metrics/queueMetrics.groovy", server, receiver, "receiveMessages");
@@ -132,14 +136,14 @@ public class JournalCompatibilityTest extends VersionedBaseTest {
public void testSendReceiveSizeQueueMetricsPaging() throws Throwable {
setVariable(senderClassloader, "persistent", true);
//Set max size to 1 to cause messages to immediately go to the paging store
- startServer(serverFolder.getRoot(), senderClassloader, "journalTest", Long.toString(1));
+ startServer(serverFolder.getRoot(), senderClassloader, "journalTest", Long.toString(1), true);
evaluate(senderClassloader, "journalcompatibility/forcepaging.groovy");
evaluate(senderClassloader, "meshTest/sendMessages.groovy", server, sender, "sendAckMessages");
evaluate(senderClassloader, "journalcompatibility/ispaging.groovy");
stopServer(senderClassloader);
setVariable(receiverClassloader, "persistent", true);
- startServer(serverFolder.getRoot(), receiverClassloader, "journalTest", Long.toString(1));
+ startServer(serverFolder.getRoot(), receiverClassloader, "journalTest", Long.toString(1), false);
evaluate(receiverClassloader, "journalcompatibility/ispaging.groovy");
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b710df78/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/VersionedBaseTest.java
----------------------------------------------------------------------
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/VersionedBaseTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/VersionedBaseTest.java
index 96d96d7..19bafd0 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/VersionedBaseTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/VersionedBaseTest.java
@@ -190,6 +190,10 @@ public abstract class VersionedBaseTest {
}
public void startServer(File folder, ClassLoader loader, String serverName, String globalMaxSize) throws Throwable {
+ startServer(folder, loader, serverName, globalMaxSize, false);
+
+ }
+ public void startServer(File folder, ClassLoader loader, String serverName, String globalMaxSize, boolean setAddressSettings) throws Throwable {
folder.mkdirs();
String scriptToUse;
@@ -201,6 +205,7 @@ public abstract class VersionedBaseTest {
scriptToUse = "servers/hornetqServer.groovy";
}
+ setVariable(loader, "setAddressSettings", setAddressSettings);
evaluate(loader, scriptToUse, folder.getAbsolutePath(), serverName, server, sender, receiver, globalMaxSize);
}
public void stopServer(ClassLoader loader) throws Throwable {