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

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

                Author: ASF GitHub Bot
            Created on: 25/Feb/26 17:40
            Start Date: 25/Feb/26 17:40
    Worklog Time Spent: 10m 
      Work Description: gemmellr commented on code in PR #6249:
URL: https://github.com/apache/artemis/pull/6249#discussion_r2854444130


##########
artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java:
##########
@@ -501,6 +503,196 @@ public void testDefaultBridgeProducerWindowSize() throws 
Exception {
       
assertEquals(ActiveMQDefaultConfiguration.getDefaultBridgeProducerWindowSize(), 
bconfig.getProducerWindowSize());
    }
 
+   @Test
+   public void testCoreFederationIgnoresAMQPFederationConfigurations() throws 
Exception {
+      FileConfigurationParser parser = new FileConfigurationParser();
+      String middlePart = """
+      <broker-connections>
+         <amqp-connection uri="tcp://test1:111" name="test1" 
retry-interval="333" reconnect-attempts="33" user="testuser" 
password="testpassword">
+            <federation>
+               <local-queue-policy name="federation5" priority-adjustment="1" 
include-federated="false">
+                  <include address-match="test" queue-match="tracking" />
+               </local-queue-policy>
+            </federation>
+         </amqp-connection>
+         <amqp-connection uri="tcp://federation" name="federation6" 
auto-start="false">
+            <federation>
+               <local-queue-policy name="lqp1" priority-adjustment="1" 
include-federated="false">
+                  <include address-match="test" queue-match="tracking" />
+                  <property key="amqpCredits" value="1"/>
+                  
<transformer-class-name>class-another</transformer-class-name>
+               </local-queue-policy>
+                <remote-queue-policy name="rqp1" priority-adjustment="-1" 
include-federated="true">
+                  <include address-match="#" queue-match="tracking" />
+                  <property key="amqpCredits" value="2"/>
+                  <property key="amqpLowCredits" value="1"/>
+               </remote-queue-policy>
+               <local-address-policy name="lap1" auto-delete="false" 
auto-delete-delay="1" auto-delete-message-count="12" max-hops="2" 
enable-divert-bindings="true">
+                  <include address-match="orders" />
+                  <exclude address-match="all.#" />
+                  <transformer-class-name>class-name</transformer-class-name>
+               </local-address-policy>
+               <local-queue-policy name="lqp2">
+                  <include address-match="address" queue-match="theQueue" />
+                  
<transformer-class-name>class-another</transformer-class-name>
+               </local-queue-policy>
+               <remote-address-policy name="rap1" auto-delete="true" 
auto-delete-delay="2" auto-delete-message-count="42" max-hops="1" 
enable-divert-bindings="false">
+                  <include address-match="support" />
+                  <property key="amqpCredits" value="2"/>
+                  <property key="amqpLowCredits" value="1"/>
+                  <transformer>
+                     <class-name>something</class-name>
+                     <property key="key1" value="value1"/>
+                     <property key="key2" value="value2"/>
+                  </transformer>
+               </remote-address-policy>
+               <property key="amqpCredits" value="7"/>
+               <property key="amqpLowCredits" value="1"/>
+            </federation>
+         </amqp-connection>
+      </broker-connections>
+      <federations>
+         <federation name="federation1">
+            <upstream name="eu-west-1" user="westuser" 
password="32a10275cf4ab4e9">
+               <static-connectors>
+                  <connector-ref>connector1</connector-ref>
+               </static-connectors>
+               <policy ref="policySetA"/>
+            </upstream>
+            <upstream name="eu-east-1" user="eastuser" 
password="32a10275cf4ab4e9">
+               <ha>true</ha>
+               <discovery-group-ref discovery-group-name="dg1"/>
+               <policy ref="policySetA"/>
+            </upstream>
+            <policy-set name="policySetA">
+               <policy ref="address-federation" />
+               <policy ref="queue-federation" />
+            </policy-set>
+            <queue-policy name="queue-federation" >
+               <exclude queue-match="the_queue" address-match="#" />
+            </queue-policy>
+            <address-policy name="address-federation" >
+               <include address-match="the_address" />
+            </address-policy>
+         </federation>
+         <federation name="federation2" user="globaluser" 
password="32a10275cf4ab4e9">
+            <upstream name="usa-west-1">
+               <static-connectors>
+                  <connector-ref>connector1</connector-ref>
+               </static-connectors>
+               <policy ref="address-federation-usa"/>
+            </upstream>
+            <upstream name="usa-east-1" >
+               <ha>true</ha>
+               <discovery-group-ref discovery-group-name="dg1"/>
+               <policy ref="queue-federation-usa"/>
+            </upstream>
+            <queue-policy name="queue-federation-usa" >
+               <exclude queue-match="the_queue" address-match="#" />
+            </queue-policy>
+            <address-policy name="address-federation-usa" >
+               <include address-match="the_address" />
+            </address-policy>
+         </federation>
+         <federation name="federation3" user="globaluser" 
password="32a10275cf4ab4e9">
+            <upstream name="asia-1">
+               <static-connectors>
+                  <connector-ref>connector1</connector-ref>
+               </static-connectors>
+               <policy ref="queue-federation-asia"/>
+               <policy ref="address-federation-asia"/>
+            </upstream>
+            <upstream name="asia-2" >
+               <ha>true</ha>
+               <discovery-group-ref discovery-group-name="dg1"/>
+               <policy ref="queue-federation-asia"/>
+               <policy ref="address-federation-asia"/>
+            </upstream>
+            <queue-policy name="queue-federation-asia" 
transformer-ref="federation-transformer-3" >
+               <exclude queue-match="the_queue" address-match="#" />
+            </queue-policy>
+            <address-policy name="address-federation-asia" 
transformer-ref="federation-transformer-3" >
+               <include address-match="the_address" />
+            </address-policy>
+            <transformer name="federation-transformer-3">
+               <class-name>org.foo.FederationTransformer3</class-name>
+               <property key="federationTransformerKey1" 
value="federationTransformerValue1"/>
+               <property key="federationTransformerKey2" 
value="federationTransformerValue2"/>
+            </transformer>
+         </federation>
+         <federation name="federation4" user="globaluser" 
password="32a10275cf4ab4e9">
+            <upstream name="asia-3">
+               <static-connectors>
+                  <connector-ref>connector1</connector-ref>
+               </static-connectors>
+               <policy ref="queue-federation-asia"/>
+               <policy ref="address-federation-asia"/>
+            </upstream>
+            <downstream name="asia-4" >
+               <ha>true</ha>
+               <discovery-group-ref discovery-group-name="dg1"/>
+               <policy ref="queue-federation-asia"/>
+               <policy ref="address-federation-asia"/>
+               <upstream-connector-ref>connector1</upstream-connector-ref>
+            </downstream>
+            <queue-policy name="queue-federation-asia2" 
transformer-ref="federation-transformer-4" >
+               <exclude queue-match="the_queue" address-match="#" />
+            </queue-policy>
+            <address-policy name="address-federation-asia2" 
transformer-ref="federation-transformer-4" >
+               <include address-match="the_address" />
+            </address-policy>
+            <transformer name="federation-transformer-4">
+               <class-name>org.foo.FederationTransformer4</class-name>
+               <property key="federationTransformerKey1" 
value="federationTransformerValue1"/>
+               <property key="federationTransformerKey2" 
value="federationTransformerValue2"/>
+            </transformer>
+         </federation>
+      </federations>""";
+
+      String configStr = FIRST_PART + middlePart + LAST_PART;
+      ByteArrayInputStream input = new 
ByteArrayInputStream(configStr.getBytes(StandardCharsets.UTF_8));
+
+      Configuration config = parser.parseMainConfig(input);
+
+      assertEquals(4, config.getFederationConfigurations().size());
+
+      final Map<String, FederationConfiguration> federations =
+         config.getFederationConfigurations().stream()
+                                             .collect(Collectors.toMap(c -> 
c.getName(), Function.identity()));
+
+      assertTrue(federations.containsKey("federation1"));
+
+      final FederationConfiguration configuration1 = 
federations.get("federation1");
+
+      assertEquals(2, configuration1.getUpstreamConfigurations().size());
+      assertEquals(0, configuration1.getDownstreamConfigurations().size());
+      assertEquals(0, configuration1.getTransformerConfigurations().size());
+
+      assertTrue(federations.containsKey("federation2"));
+
+      final FederationConfiguration configuration2 = 
federations.get("federation3");
+
+      assertEquals(2, configuration2.getUpstreamConfigurations().size());
+      assertEquals(0, configuration2.getDownstreamConfigurations().size());
+      assertEquals(1, configuration2.getTransformerConfigurations().size());

Review Comment:
   C&P error? Looks to be checking the wrong config, federation3 instead of 
federation2.





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

    Worklog Id:     (was: 1007212)
    Time Spent: 20m  (was: 10m)

> AMQP Federation configuration triggers empty Core federation entries
> --------------------------------------------------------------------
>
>                 Key: ARTEMIS-5911
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5911
>             Project: Artemis
>          Issue Type: Bug
>          Components: AMQP, Federation
>    Affects Versions: 2.51.0
>            Reporter: Timothy A. Bish
>            Assignee: Timothy A. Bish
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 2.52.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> When reading configuration XML if there is an AMQP federation configuration 
> in a broker connection it triggers the core federation parser to create an 
> empty federation configuration entry. This does not create a Core federation 
> as there are no upstream or downstream elements it does make it confusing 
> that these entries show up.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to