You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2018/02/27 21:27:25 UTC

[4/5] activemq-artemis git commit: NO-JIRA Using force option on deleteTopics and deleteQueues on JoramTests

NO-JIRA Using force option on deleteTopics and deleteQueues on JoramTests


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/158eb9d3
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/158eb9d3
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/158eb9d3

Branch: refs/heads/master
Commit: 158eb9d3bfb8ed16f40106dc37c630e9a3b3052e
Parents: c6028c7
Author: Clebert Suconic <cl...@apache.org>
Authored: Tue Feb 27 15:50:52 2018 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue Feb 27 16:13:42 2018 -0500

----------------------------------------------------------------------
 .../core/management/ActiveMQServerControl.java  | 78 ++++++++++----------
 .../impl/ActiveMQServerControlImpl.java         |  8 +-
 .../artemis/core/postoffice/PostOffice.java     |  2 +
 .../core/postoffice/impl/PostOfficeImpl.java    | 19 ++++-
 .../artemis/core/server/ActiveMQServer.java     | 11 ++-
 .../core/server/impl/ActiveMQServerImpl.java    |  8 +-
 .../ActiveMQServerControlUsingCoreTest.java     |  5 ++
 .../activemq/artemis/common/AbstractAdmin.java  |  4 +-
 .../core/server/impl/fakes/FakePostOffice.java  |  5 ++
 9 files changed, 93 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
index fc9de24..cfde85e 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
@@ -438,7 +438,6 @@ public interface ActiveMQServerControl {
    @Attribute(desc = "global maximum limit for in-memory messages, in bytes")
    long getGlobalMaxSize();
 
-
    /**
     * Returns the  memory used by all the addresses on broker for in-memory messages
     */
@@ -457,15 +456,19 @@ public interface ActiveMQServerControl {
 
    @Operation(desc = "create an address", impact = MBeanOperationInfo.ACTION)
    String createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
-                      @Parameter(name = "routingTypes", desc = "Comma separated list of Routing Types (anycast/multicast)") String routingTypes) throws Exception;
+                        @Parameter(name = "routingTypes", desc = "Comma separated list of Routing Types (anycast/multicast)") String routingTypes) throws Exception;
 
    @Operation(desc = "update an address", impact = MBeanOperationInfo.ACTION)
    String updateAddress(@Parameter(name = "name", desc = "The name of the address") String name,
-                      @Parameter(name = "routingTypes", desc = "Comma separated list of Routing Types (anycast/multicast)") String routingTypes) throws Exception;
+                        @Parameter(name = "routingTypes", desc = "Comma separated list of Routing Types (anycast/multicast)") String routingTypes) throws Exception;
 
    @Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
    void deleteAddress(@Parameter(name = "name", desc = "The name of the address") String name) throws Exception;
 
+   @Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
+   void deleteAddress(@Parameter(name = "name", desc = "The name of the address") String name,
+                      @Parameter(name = "force", desc = "Force consumers and queues out") boolean force) throws Exception;
+
    /**
     * Create a durable queue.
     * <br>
@@ -481,7 +484,6 @@ public interface ActiveMQServerControl {
    void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
                     @Parameter(name = "name", desc = "Name of the queue") String name) throws Exception;
 
-
    /**
     * Create a durable queue.
     * <br>
@@ -489,8 +491,8 @@ public interface ActiveMQServerControl {
     * <br>
     * This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
     *
-    * @param address address to bind the queue to
-    * @param name    name of the queue
+    * @param address     address to bind the queue to
+    * @param name        name of the queue
     * @param routingType The routing type used for this address, MULTICAST or ANYCAST
     */
    @Operation(desc = "Create a queue with the specified address", impact = MBeanOperationInfo.ACTION)
@@ -498,7 +500,6 @@ public interface ActiveMQServerControl {
                     @Parameter(name = "name", desc = "Name of the queue") String name,
                     @Parameter(name = "routingType", desc = "The routing type used for this address, MULTICAST or ANYCAST") String routingType) throws Exception;
 
-
    /**
     * Create a queue.
     * <br>
@@ -523,9 +524,9 @@ public interface ActiveMQServerControl {
     * <br>
     * This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
     *
-    * @param address address to bind the queue to
-    * @param name    name of the queue
-    * @param durable whether the queue is durable
+    * @param address     address to bind the queue to
+    * @param name        name of the queue
+    * @param durable     whether the queue is durable
     * @param routingType The routing type used for this address, MULTICAST or ANYCAST
     */
    @Operation(desc = "Create a queue with the specified address, name and durability", impact = MBeanOperationInfo.ACTION)
@@ -559,10 +560,10 @@ public interface ActiveMQServerControl {
     * <br>
     * This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
     *
-    * @param address address to bind the queue to
-    * @param name    name of the queue
-    * @param filter  of the queue
-    * @param durable whether the queue is durable
+    * @param address     address to bind the queue to
+    * @param name        name of the queue
+    * @param filter      of the queue
+    * @param durable     whether the queue is durable
     * @param routingType The routing type used for this address, MULTICAST or ANYCAST
     */
    @Operation(desc = "Create a queue", impact = MBeanOperationInfo.ACTION)
@@ -572,7 +573,6 @@ public interface ActiveMQServerControl {
                     @Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
                     @Parameter(name = "routingType", desc = "The routing type used for this address, MULTICAST or ANYCAST") String routingType) throws Exception;
 
-
    /**
     * Create a queue.
     * <br>
@@ -580,33 +580,33 @@ public interface ActiveMQServerControl {
     * <br>
     * This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
     *
-    * @param address             address to bind the queue to
-    * @param routingType         the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
-    * @param name                name of the queue
-    * @param filterStr           filter of the queue
-    * @param durable             is the queue durable?
-    * @param maxConsumers        the maximum number of consumers allowed on this queue at any one time
+    * @param address            address to bind the queue to
+    * @param routingType        the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
+    * @param name               name of the queue
+    * @param filterStr          filter of the queue
+    * @param durable            is the queue durable?
+    * @param maxConsumers       the maximum number of consumers allowed on this queue at any one time
     * @param purgeOnNoConsumers delete this queue when the last consumer disconnects
-    * @param autoCreateAddress   create an address with default values should a matching address not be found
+    * @param autoCreateAddress  create an address with default values should a matching address not be found
     * @return a textual summary of the queue
     * @throws Exception
     */
    @Operation(desc = "Create a queue", impact = MBeanOperationInfo.ACTION)
    String createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
-                    @Parameter(name = "routingType", desc = "The routing type used for this address, MULTICAST or ANYCAST") String routingType,
-                    @Parameter(name = "name", desc = "Name of the queue") String name,
-                    @Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
-                    @Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
-                    @Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
-                    @Parameter(name = "purgeOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean purgeOnNoConsumers,
-                    @Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception;
+                      @Parameter(name = "routingType", desc = "The routing type used for this address, MULTICAST or ANYCAST") String routingType,
+                      @Parameter(name = "name", desc = "Name of the queue") String name,
+                      @Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
+                      @Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
+                      @Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
+                      @Parameter(name = "purgeOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean purgeOnNoConsumers,
+                      @Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception;
 
    /**
     * Update a queue.
     *
-    * @param name                name of the queue
-    * @param routingType         the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
-    * @param maxConsumers        the maximum number of consumers allowed on this queue at any one time
+    * @param name               name of the queue
+    * @param routingType        the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
+    * @param maxConsumers       the maximum number of consumers allowed on this queue at any one time
     * @param purgeOnNoConsumers delete this queue when the last consumer disconnects
     * @return a textual summary of the queue
     * @throws Exception
@@ -616,13 +616,12 @@ public interface ActiveMQServerControl {
                       @Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") Integer maxConsumers,
                       @Parameter(name = "purgeOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") Boolean purgeOnNoConsumers) throws Exception;
 
-
    /**
     * Update a queue.
     *
-    * @param name                name of the queue
-    * @param routingType         the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
-    * @param maxConsumers        the maximum number of consumers allowed on this queue at any one time
+    * @param name               name of the queue
+    * @param routingType        the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
+    * @param maxConsumers       the maximum number of consumers allowed on this queue at any one time
     * @param purgeOnNoConsumers delete this queue when the last consumer disconnects
     * @return a textual summary of the queue
     * @throws Exception
@@ -633,7 +632,6 @@ public interface ActiveMQServerControl {
                       @Parameter(name = "purgeOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") Boolean purgeOnNoConsumers,
                       @Parameter(name = "exclusive", desc = "If the queue should route exclusively to one consumer") Boolean exclusive) throws Exception;
 
-
    /**
     * Deploy a durable queue.
     * <br>
@@ -689,7 +687,6 @@ public interface ActiveMQServerControl {
                      @Parameter(name = "removeConsumers", desc = "Remove consumers of this queue") boolean removeConsumers,
                      @Parameter(name = "autoDeleteAddress", desc = "Automatically delete the address if this was the last queue") boolean autoDeleteAddress) throws Exception;
 
-
    /**
     * Enables message counters for this server.
     */
@@ -987,6 +984,7 @@ public interface ActiveMQServerControl {
                            @Parameter(desc = "allow auto-created queues to be deleted automatically", name = "autoDeleteJmsQueues") boolean autoDeleteJmsQueues,
                            @Parameter(desc = "allow topics to be created automatically", name = "autoCreateJmsTopics") boolean autoCreateJmsTopics,
                            @Parameter(desc = "allow auto-created topics to be deleted automatically", name = "autoDeleteJmsTopics") boolean autoDeleteJmsTopics) throws Exception;
+
    /**
     * adds a new address setting for a specific address
     */
@@ -1213,8 +1211,8 @@ public interface ActiveMQServerControl {
 
    @Operation(desc = "Search for Consumers", impact = MBeanOperationInfo.INFO)
    String listConsumers(@Parameter(name = "Options") String options,
-                       @Parameter(name = "Page Number") int page,
-                       @Parameter(name = "Page Size") int pageSize) throws Exception;
+                        @Parameter(name = "Page Number") int page,
+                        @Parameter(name = "Page Size") int pageSize) throws Exception;
 
    @Operation(desc = "Search for Consumers", impact = MBeanOperationInfo.INFO)
    String listProducers(@Parameter(name = "Options") String options,

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index 73a731d..d0f0b5c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -722,13 +722,19 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
       }
    }
 
+
    @Override
    public void deleteAddress(String name) throws Exception {
+      deleteAddress(name, false);
+   }
+
+   @Override
+   public void deleteAddress(String name, boolean force) throws Exception {
       checkStarted();
 
       clearIO();
       try {
-         server.removeAddressInfo(new SimpleString(name), null);
+         server.removeAddressInfo(new SimpleString(name), null, force);
       } catch (ActiveMQException e) {
          throw new IllegalStateException(e.getMessage());
       } finally {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/PostOffice.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/PostOffice.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/PostOffice.java
index 5d081a3..19ddd94 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/PostOffice.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/PostOffice.java
@@ -58,6 +58,8 @@ public interface PostOffice extends ActiveMQComponent {
 
    AddressInfo removeAddressInfo(SimpleString address) throws Exception;
 
+   AddressInfo removeAddressInfo(SimpleString address, boolean force) throws Exception;
+
    AddressInfo getAddressInfo(SimpleString address);
 
    AddressInfo updateAddressInfo(SimpleString addressName, EnumSet<RoutingType> routingTypes) throws Exception;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
index 3f9356c..b2bfe37 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
@@ -544,16 +544,31 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
       }
    }
 
+
    @Override
    public AddressInfo removeAddressInfo(SimpleString address) throws Exception {
+      return removeAddressInfo(address, false);
+   }
+
+   @Override
+   public AddressInfo removeAddressInfo(SimpleString address, boolean force) throws Exception {
       synchronized (addressLock) {
          if (server.hasBrokerPlugins()) {
             server.callBrokerPlugins(plugin -> plugin.beforeRemoveAddress(address));
          }
 
          final Bindings bindingsForAddress = getDirectBindings(address);
-         if (bindingsForAddress.getBindings().size() > 0) {
-            throw ActiveMQMessageBundle.BUNDLE.addressHasBindings(address);
+         if (force) {
+            for (Binding binding : bindingsForAddress.getBindings()) {
+               if (binding instanceof QueueBinding) {
+                  ((QueueBinding)binding).getQueue().deleteQueue(true);
+               }
+            }
+
+         } else {
+            if (bindingsForAddress.getBindings().size() > 0) {
+               throw ActiveMQMessageBundle.BUNDLE.addressHasBindings(address);
+            }
          }
          managementService.unregisterAddress(address);
          final AddressInfo addressInfo = addressManager.removeAddressInfo(address);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
index b8598b8..88c25a8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServer.java
@@ -511,7 +511,6 @@ public interface ActiveMQServer extends ServiceComponent {
     * @throws Exception
     */
    AddressInfo addOrUpdateAddressInfo(AddressInfo addressInfo) throws Exception;
-
    /**
     * Remove an {@code AddressInfo} from the broker.
     *
@@ -521,6 +520,16 @@ public interface ActiveMQServer extends ServiceComponent {
     */
    void removeAddressInfo(SimpleString address, SecurityAuth auth) throws Exception;
 
+   /**
+    * Remove an {@code AddressInfo} from the broker.
+    *
+    * @param address the {@code AddressInfo} to remove
+    * @param auth authorization information; {@code null} is valid
+    * @param force It will disconnect everything from the address including queues and consumers
+    * @throws Exception
+    */
+   void removeAddressInfo(SimpleString address, SecurityAuth auth, boolean force) throws Exception;
+
    String getInternalNamingPrefix();
 
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index ad3dba8..1f0dbd6 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -2661,14 +2661,20 @@ public class ActiveMQServerImpl implements ActiveMQServer {
       return getAddressInfo(addressInfo.getName());
    }
 
+
    @Override
    public void removeAddressInfo(final SimpleString address, final SecurityAuth auth) throws Exception {
+      removeAddressInfo(address, auth, false);
+   }
+
+   @Override
+   public void removeAddressInfo(final SimpleString address, final SecurityAuth auth, boolean force) throws Exception {
       if (auth != null) {
          securityStore.check(address, CheckType.DELETE_ADDRESS, auth);
       }
 
       AddressInfo addressInfo = getAddressInfo(address);
-      if (postOffice.removeAddressInfo(address) == null) {
+      if (postOffice.removeAddressInfo(address, force) == null) {
          throw ActiveMQMessageBundle.BUNDLE.addressDoesNotExist(address);
       }
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
index 16d64fd..57ead70 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
@@ -151,6 +151,11 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
          }
 
          @Override
+         public void deleteAddress(@Parameter(name = "name", desc = "The name of the address") String name, @Parameter(name = "force", desc = "Force everything out!") boolean force) throws Exception {
+            proxy.invokeOperation("deleteAddress", name, force);
+         }
+
+         @Override
          public void createQueue(final String address,
                                  final String name,
                                  final String filter,

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/tests/joram-tests/src/test/java/org/apache/activemq/artemis/common/AbstractAdmin.java
----------------------------------------------------------------------
diff --git a/tests/joram-tests/src/test/java/org/apache/activemq/artemis/common/AbstractAdmin.java b/tests/joram-tests/src/test/java/org/apache/activemq/artemis/common/AbstractAdmin.java
index 38fc739..70ce6be 100644
--- a/tests/joram-tests/src/test/java/org/apache/activemq/artemis/common/AbstractAdmin.java
+++ b/tests/joram-tests/src/test/java/org/apache/activemq/artemis/common/AbstractAdmin.java
@@ -130,7 +130,7 @@ public class AbstractAdmin implements Admin {
    public void deleteQueue(final String name) {
       Boolean result;
       try {
-         invokeSyncOperation(ResourceNames.BROKER, "destroyQueue", name);
+         invokeSyncOperation(ResourceNames.BROKER, "destroyQueue", name, true);
       } catch (Exception e) {
          throw new IllegalStateException(e);
       }
@@ -159,7 +159,7 @@ public class AbstractAdmin implements Admin {
    public void deleteTopic(final String name) {
       Boolean result;
       try {
-         invokeSyncOperation(ResourceNames.BROKER, "deleteAddress", name);
+         invokeSyncOperation(ResourceNames.BROKER, "deleteAddress", name, Boolean.TRUE);
       } catch (Exception e) {
          throw new IllegalStateException(e);
       }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/158eb9d3/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/server/impl/fakes/FakePostOffice.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/server/impl/fakes/FakePostOffice.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/server/impl/fakes/FakePostOffice.java
index e455e41..6402bff 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/server/impl/fakes/FakePostOffice.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/server/impl/fakes/FakePostOffice.java
@@ -96,6 +96,11 @@ public class FakePostOffice implements PostOffice {
    }
 
    @Override
+   public AddressInfo removeAddressInfo(SimpleString address, boolean force) throws Exception {
+      return null;
+   }
+
+   @Override
    public boolean addAddressInfo(AddressInfo addressInfo) {
       return false;
    }