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/03/22 20:20:19 UTC
[1/2] activemq-artemis git commit: This closes #1971
Repository: activemq-artemis
Updated Branches:
refs/heads/master 7a36e84aa -> d8f22a399
This closes #1971
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/d8f22a39
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/d8f22a39
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/d8f22a39
Branch: refs/heads/master
Commit: d8f22a399b70cbe59a8616da68d485069d554b62
Parents: 7a36e84 a9d84a7
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Mar 22 16:20:14 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 22 16:20:14 2018 -0400
----------------------------------------------------------------------
.../core/persistence/QueueBindingInfo.java | 4 ++
.../journal/AbstractJournalStorageManager.java | 2 +-
.../codec/PersistentQueueBindingEncoding.java | 27 +++++++++++-
.../server/impl/PostOfficeJournalLoader.java | 1 +
.../persistence/QueueConfigRestartTest.java | 45 ++++++++++++++++++++
5 files changed, 76 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-1766 - Persist LastValue
queue config in bindings.
Posted by cl...@apache.org.
ARTEMIS-1766 - Persist LastValue queue config in bindings.
Added Integration tests for the issue.
Add lastvalue to the queue bindings that get persisted.
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a9d84a7d
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a9d84a7d
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a9d84a7d
Branch: refs/heads/master
Commit: a9d84a7dad752bd07be702201219a085d9aa36c7
Parents: 7a36e84
Author: Michael André Pearce <mi...@me.com>
Authored: Thu Mar 22 17:22:54 2018 +0000
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 22 16:20:14 2018 -0400
----------------------------------------------------------------------
.../core/persistence/QueueBindingInfo.java | 4 ++
.../journal/AbstractJournalStorageManager.java | 2 +-
.../codec/PersistentQueueBindingEncoding.java | 27 +++++++++++-
.../server/impl/PostOfficeJournalLoader.java | 1 +
.../persistence/QueueConfigRestartTest.java | 45 ++++++++++++++++++++
5 files changed, 76 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a9d84a7d/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/QueueBindingInfo.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/QueueBindingInfo.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/QueueBindingInfo.java
index 00b7974..7e18311 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/QueueBindingInfo.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/QueueBindingInfo.java
@@ -58,6 +58,10 @@ public interface QueueBindingInfo {
void setExclusive(boolean exclusive);
+ boolean isLastValue();
+
+ void setLastValue(boolean lastValue);
+
byte getRoutingType();
void setRoutingType(byte routingType);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a9d84a7d/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java
index 6d9df08..dc2e20b 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/AbstractJournalStorageManager.java
@@ -1275,7 +1275,7 @@ public abstract class AbstractJournalStorageManager extends CriticalComponentImp
SimpleString filterString = filter == null ? null : filter.getFilterString();
- PersistentQueueBindingEncoding bindingEncoding = new PersistentQueueBindingEncoding(queue.getName(), binding.getAddress(), filterString, queue.getUser(), queue.isAutoCreated(), queue.getMaxConsumers(), queue.isPurgeOnNoConsumers(), queue.isExclusive(), queue.getRoutingType().getType());
+ PersistentQueueBindingEncoding bindingEncoding = new PersistentQueueBindingEncoding(queue.getName(), binding.getAddress(), filterString, queue.getUser(), queue.isAutoCreated(), queue.getMaxConsumers(), queue.isPurgeOnNoConsumers(), queue.isExclusive(), queue.isLastValue(), queue.getRoutingType().getType());
readLock();
try {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a9d84a7d/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
index d67b300..2ab4396 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentQueueBindingEncoding.java
@@ -48,6 +48,8 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
public boolean exclusive;
+ public boolean lastValue;
+
public byte routingType;
public PersistentQueueBindingEncoding() {
@@ -70,8 +72,10 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
maxConsumers +
", purgeOnNoConsumers=" +
purgeOnNoConsumers +
- ", exclusive=" +
- exclusive +
+ ", exclusive=" +
+ exclusive +
+ ", lastValue=" +
+ lastValue +
", routingType=" +
routingType +
"]";
@@ -85,6 +89,7 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
final int maxConsumers,
final boolean purgeOnNoConsumers,
final boolean exclusive,
+ final boolean lastValue,
final byte routingType) {
this.name = name;
this.address = address;
@@ -94,6 +99,7 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
this.maxConsumers = maxConsumers;
this.purgeOnNoConsumers = purgeOnNoConsumers;
this.exclusive = exclusive;
+ this.lastValue = lastValue;
this.routingType = routingType;
}
@@ -180,6 +186,16 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
}
@Override
+ public boolean isLastValue() {
+ return lastValue;
+ }
+
+ @Override
+ public void setLastValue(boolean lastValue) {
+ this.lastValue = lastValue;
+ }
+
+ @Override
public byte getRoutingType() {
return routingType;
}
@@ -225,6 +241,11 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
} else {
exclusive = ActiveMQDefaultConfiguration.getDefaultExclusive();
}
+ if (buffer.readableBytes() > 0) {
+ lastValue = buffer.readBoolean();
+ } else {
+ lastValue = ActiveMQDefaultConfiguration.getDefaultLastValue();
+ }
}
@Override
@@ -238,6 +259,7 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
buffer.writeBoolean(purgeOnNoConsumers);
buffer.writeByte(routingType);
buffer.writeBoolean(exclusive);
+ buffer.writeBoolean(lastValue);
}
@Override
@@ -248,6 +270,7 @@ public class PersistentQueueBindingEncoding implements EncodingSupport, QueueBin
DataConstants.SIZE_INT +
DataConstants.SIZE_BOOLEAN +
DataConstants.SIZE_BYTE +
+ DataConstants.SIZE_BOOLEAN +
DataConstants.SIZE_BOOLEAN;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a9d84a7d/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
index 89ea2fc..9385be3 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/PostOfficeJournalLoader.java
@@ -152,6 +152,7 @@ public class PostOfficeJournalLoader implements JournalLoader {
.purgeOnNoConsumers(queueBindingInfo.isPurgeOnNoConsumers())
.maxConsumers(queueBindingInfo.getMaxConsumers())
.exclusive(queueBindingInfo.isExclusive())
+ .lastValue(queueBindingInfo.isLastValue())
.routingType(RoutingType.getType(queueBindingInfo.getRoutingType()));
final Queue queue = queueFactory.createQueueWith(queueConfigBuilder.build());
queue.setConsumersRefCount(new QueueManagerImpl(((PostOfficeImpl)postOffice).getServer(), queueBindingInfo.getQueueName()));
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a9d84a7d/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/QueueConfigRestartTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/QueueConfigRestartTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/QueueConfigRestartTest.java
index a5973c7..e3b179b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/QueueConfigRestartTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/QueueConfigRestartTest.java
@@ -62,6 +62,51 @@ public class QueueConfigRestartTest extends ActiveMQTestBase {
}
@Test
+ public void testQueueConfigLastValueAndRestart() throws Exception {
+ ActiveMQServer server = createServer(true);
+
+ server.start();
+
+ SimpleString address = new SimpleString("test.address");
+ SimpleString queue = new SimpleString("test.queue");
+
+ server.createQueue(address, RoutingType.MULTICAST, queue, null, null, true, false, false, false,false, 10, true, false, true, true);
+
+ QueueBinding queueBinding1 = (QueueBinding)server.getPostOffice().getBinding(queue);
+ Assert.assertTrue(queueBinding1.getQueue().isLastValue());
+
+ server.stop();
+
+ server.start();
+
+ QueueBinding queueBinding2 = (QueueBinding)server.getPostOffice().getBinding(queue);
+ Assert.assertTrue(queueBinding2.getQueue().isLastValue());
+ }
+
+ @Test
+ public void testQueueConfigExclusiveAndRestart() throws Exception {
+ ActiveMQServer server = createServer(true);
+
+ server.start();
+
+ SimpleString address = new SimpleString("test.address");
+ SimpleString queue = new SimpleString("test.queue");
+
+ server.createQueue(address, RoutingType.MULTICAST, queue, null, null, true, false, false, false,false, 10, true, true, true, true);
+
+ QueueBinding queueBinding1 = (QueueBinding)server.getPostOffice().getBinding(queue);
+ Assert.assertTrue(queueBinding1.getQueue().isExclusive());
+
+ server.stop();
+
+ server.start();
+
+ QueueBinding queueBinding2 = (QueueBinding)server.getPostOffice().getBinding(queue);
+ Assert.assertTrue(queueBinding2.getQueue().isExclusive());
+ }
+
+
+ @Test
public void testQueueConfigUserAndRestart() throws Exception {
ActiveMQServer server = createServer(true);