fantapsody opened a new issue, #16137:
URL: https://github.com/apache/pulsar/issues/16137

   **Describe the bug**
   The order of items is not preserved for configuration fields of the type 
`Set`, just like 
[`authenticationProviders`](https://github.com/apache/pulsar/blob/8730c22688f90edffa61c201789838cc63e6864d/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java#L1372).
 Preserving the order of items in the config would make the program behavior to 
be more predictable, and may potentially make it possible for more operation 
flexibilities.
   
   **To Reproduce**
   
   A unit test like this will fail:
   
   ```java
       @Test
       public void testAuthenticationProviders() throws IOException {
           String confFile = "authenticationProviders=authn1,authn2,authn3";
   
           @Cleanup
           InputStream inputStream = new 
ByteArrayInputStream(confFile.getBytes());
           ServiceConfiguration conf = 
PulsarConfigurationLoader.create(inputStream, ServiceConfiguration.class);
           assertEquals(conf.getAuthenticationProviders().size(), 3);
   
           ArrayList<String> authList = new 
ArrayList<>(conf.getAuthenticationProviders());
           assertEquals(authList.get(0), "authn1"); // got 
java.lang.AssertionError
           assertEquals(authList.get(1), "authn2");
           assertEquals(authList.get(2), "authn3");
       }
   ```
   
   The error message would be like:
   > java.lang.AssertionError: 
   > Expected :authn1
   > Actual   :authn3
   
   **Expected behavior**
   The order of items in the Set should be preserved, and the unit test listed 
above should pass.
   
   **Screenshots**
   N/A
   
   **Desktop (please complete the following information):**
    - OS: macOS 12.4
   
   **Additional context**
   N/A
   


-- 
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.

To unsubscribe, e-mail: [email protected]

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

Reply via email to