[ 
https://issues.apache.org/jira/browse/ARTEMIS-2797?focusedWorklogId=443590&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-443590
 ]

ASF GitHub Bot logged work on ARTEMIS-2797:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 10/Jun/20 07:16
            Start Date: 10/Jun/20 07:16
    Worklog Time Spent: 10m 
      Work Description: michaelandrepearce commented on a change in pull 
request #3172:
URL: https://github.com/apache/activemq-artemis/pull/3172#discussion_r437908090



##########
File path: 
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
##########
@@ -287,6 +287,99 @@ public void run() {
       }
    }
 
+   private void doTestRemoveFilter(URL testConfiguration) throws Exception {
+
+      Path brokerXML = getTestDirfile().toPath().resolve("broker.xml");
+
+      URL baseConfig = 
RedeployTest.class.getClassLoader().getResource("reload-queue-filter.xml");
+
+      Files.copy(baseConfig.openStream(), brokerXML, 
StandardCopyOption.REPLACE_EXISTING);
+
+      EmbeddedActiveMQ embeddedActiveMQ = new EmbeddedActiveMQ();
+      embeddedActiveMQ.setConfigResourcePath(brokerXML.toUri().toString());
+      embeddedActiveMQ.start();
+
+      final ReusableLatch latch = new ReusableLatch(1);
+
+      Runnable tick = new Runnable() {
+         @Override
+         public void run() {
+            latch.countDown();
+         }
+      };
+
+      try {
+
+         embeddedActiveMQ.getActiveMQServer().getReloadManager().setTick(tick);
+         latch.await(10, TimeUnit.SECONDS);
+
+         try (ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory();
+              Connection connection = factory.createConnection();
+              Session session = 
connection.createSession(Session.AUTO_ACKNOWLEDGE)) {
+
+            connection.start();
+            Queue queue = session.createQueue("myFilterQueue");
+            MessageProducer producer = session.createProducer(queue);
+
+            Message passingMessage = session.createMessage();
+            passingMessage.setStringProperty("x", "x");
+            producer.send(passingMessage);
+
+            Message filteredMessage = session.createMessage();
+            filteredMessage.setStringProperty("x", "y");
+            producer.send(filteredMessage);
+
+            MessageConsumer consumer = session.createConsumer(queue);
+            Message receivedMessage = consumer.receive(2000);
+            assertNotNull(receivedMessage);
+            assertEquals("x", receivedMessage.getStringProperty("x"));
+
+            assertNull(consumer.receive(2000));
+
+            consumer.close();
+         }
+
+         Files.copy(testConfiguration.openStream(), brokerXML, 
StandardCopyOption.REPLACE_EXISTING);
+         brokerXML.toFile().setLastModified(System.currentTimeMillis() + 1000);
+
+         latch.setCount(1);
+         embeddedActiveMQ.getActiveMQServer().getReloadManager().setTick(tick);
+         latch.await(10, TimeUnit.SECONDS);
+
+         try (ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory();
+              Connection connection = factory.createConnection();
+              Session session = 
connection.createSession(Session.AUTO_ACKNOWLEDGE)) {
+
+            connection.start();
+            Queue queue = session.createQueue("myFilterQueue");
+            MessageProducer producer = session.createProducer(queue);
+
+            Message message1 = session.createMessage();
+            message1.setStringProperty("x", "x");
+            producer.send(message1);
+
+            Message message2 = session.createMessage();
+            message2.setStringProperty("x", "y");
+            producer.send(message2);
+
+            MessageConsumer consumer = session.createConsumer(queue);
+            assertNotNull(consumer.receive(2000));
+            assertNotNull(consumer.receive(2000));
+
+            consumer.close();
+         }
+
+      } finally {
+         embeddedActiveMQ.stop();
+      }
+   }
+
+   @Test
+   public void testRedeployRemoveFilter() throws Exception {
+      
doTestRemoveFilter(RedeployTest.class.getClassLoader().getResource("reload-queue-filter-updated-empty.xml"));
+      
doTestRemoveFilter(RedeployTest.class.getClassLoader().getResource("reload-queue-filter-removed.xml"));
+   }

Review comment:
       I would expect the test to first validate a filter works and queueimpl 
has filter matching with a real filter, then reload config and validate both 
the queueimpl is null and now no filtering is applied on flow. To vaildate 
update does indeed remove a filter if previously set. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 443590)
    Time Spent: 1h 20m  (was: 1h 10m)

> Allow for removing current queue filter
> ---------------------------------------
>
>                 Key: ARTEMIS-2797
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2797
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 2.13.0
>            Reporter: Jan Å mucr
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.14.0
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Currently the queue filter cannot be removed because of a filter ~ null check 
> leading to quitting the PostOfficeImpl#updateQueue() instead of setting the 
> queue filter to empty.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to