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