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

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

                Author: ASF GitHub Bot
            Created on: 10/Apr/23 16:17
            Start Date: 10/Apr/23 16:17
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on code in PR #4421:
URL: https://github.com/apache/activemq-artemis/pull/4421#discussion_r1161863645


##########
artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/AutoCreateResult.java:
##########
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.api.core;
+
+public enum AutoCreateResult {
+
+   EXISTED, CREATED, UPDATED, NOT_FOUND;
+
+   public byte getType() {
+      switch (this) {
+         case EXISTED:
+            return 0;
+         case CREATED:
+            return 1;
+         case UPDATED:
+            return 2;
+         case NOT_FOUND:
+            return 3;
+         default:
+            return -1;
+      }
+   }
+
+   public static AutoCreateResult getType(byte type) {
+      switch (type) {
+         case 0:
+            return EXISTED;
+         case 1:
+            return CREATED;
+         case 2:
+            return UPDATED;
+         case 3:
+            return NOT_FOUND;
+         default:
+            return null;

Review Comment:
   Fixed.



##########
artemis-commons/src/main/java/org/apache/activemq/artemis/api/core/AutoCreateResult.java:
##########
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.api.core;
+
+public enum AutoCreateResult {
+
+   EXISTED, CREATED, UPDATED, NOT_FOUND;
+
+   public byte getType() {
+      switch (this) {
+         case EXISTED:
+            return 0;
+         case CREATED:
+            return 1;
+         case UPDATED:
+            return 2;
+         case NOT_FOUND:
+            return 3;
+         default:
+            return -1;
+      }
+   }
+
+   public static AutoCreateResult getType(byte type) {

Review Comment:
   Fixed.



##########
artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/AddressQueryImpl.java:
##########
@@ -133,4 +141,14 @@ public Integer getDefaultConsumersBeforeDispatch() {
    public Long getDefaultDelayBeforeDispatch() {
       return defaultDelayBeforeDispatch;
    }
+
+   @Override
+   public boolean isSupportsMulticast() {
+      return supportsMulticast;
+   }
+
+   @Override
+   public boolean isSupportsAnycast() {
+      return supportsAnycast;
+   }

Review Comment:
   Fixed.





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

    Worklog Id:     (was: 855906)
    Time Spent: 50m  (was: 40m)

> Unexpected Behavior when Routing Type of Destinations Doesn't Match Clients
> ---------------------------------------------------------------------------
>
>                 Key: ARTEMIS-4212
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4212
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>            Reporter: Justin Bertram
>            Assignee: Justin Bertram
>            Priority: Major
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> When the routing type of an address (and associated queue) does not match the 
> routing type of a client producer, the resultant behavior is a bit unexpected.
> Expected Behavior:
> If a client sends a message to an address / queue with the same name, but a 
> different routing type, the expected behavior would be to throw some sort of 
> InvalidDestinationException (if auto-create is not enabled), or to create the 
> matching address and queue with the appropriate routing type. The routing 
> count on the existing address (with non-matching routing type) should remain 
> unchanged.
> Actual Behavior:
> When sending, for example, to a predefined anycast address and queue from a 
> multiccast (Topic) producer, the routed count on the address is incremented, 
> but the message count on the matching queue is not. No indication is given at 
> the client end that the messages failed to get routed - they are silently 
> dropped.
> This is reproducible using a qpid / proton queue producer to send to a 
> multicast address or using a topic producer to send to an anycast address, 
> e.g.:
> 1. Create a a broker, setting auto-create-queues and auto-create addresses to 
> "false" for the catch-all address-setting
> 2. Start the broker and create a an address and matching queue with a ANYCAST 
> routing type
> 3. Send 1000 messages to the broker using the same queue name but mismatched 
> routing type:
> {code}
> ./artemis producer --url amqp://localhost:61616 --user admin --password admin 
> --destination topic://{QUEUE NAME} --protocol amqp
> {code}
> No error is emitted and the routing count is incremented by 1000 at the 
> address level, but remains unchanged at the destination level.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to