chickenchickenlove commented on code in PR #21280:
URL: https://github.com/apache/kafka/pull/21280#discussion_r2716969375


##########
tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java:
##########
@@ -461,27 +461,32 @@ public void 
testUpdatePerBrokerConfigInKRaftThenShouldFail() {
     }
 
     @ClusterTest
-    public void testUpdateInvalidBrokerConfigs() {
+    public void testUpdateInvalidBrokerConfigs() throws InterruptedException {
         updateAndCheckInvalidBrokerConfig(Optional.empty());
         
updateAndCheckInvalidBrokerConfig(Optional.of(String.valueOf((cluster.brokers().entrySet().iterator().next().getKey()))));
     }
 
-    private void updateAndCheckInvalidBrokerConfig(Optional<String> 
brokerIdOrDefault) {
+    private void updateAndCheckInvalidBrokerConfig(Optional<String> 
brokerIdOrDefault) throws InterruptedException {
         List<String> alterOpts = 
generateDefaultAlterOpts(cluster.bootstrapServers());
         try (Admin client = cluster.admin()) {
             alterConfigWithAdmin(client, brokerIdOrDefault, Map.of("invalid", 
"2"), alterOpts);
+            AtomicReference<String> last = new AtomicReference<>("");
 
-            Stream<String> describeCommand = Stream.concat(
-                    Stream.concat(
-                            Stream.of("--bootstrap-server", 
cluster.bootstrapServers()),
-                            Stream.of(entityOp(brokerIdOrDefault).toArray(new 
String[0]))),
-                    Stream.of("--entity-type", "brokers", "--describe"));
-            String describeResult = captureStandardOut(run(describeCommand));
-
-            // We will treat unknown config as sensitive
-            assertTrue(describeResult.contains("sensitive=true"), 
describeResult);
-            // Sensitive config will not return
-            assertTrue(describeResult.contains("invalid=null"), 
describeResult);
+            TestUtils.waitForCondition(() -> {
+                Stream<String> describeCommand = Stream.concat(
+                        Stream.concat(
+                                Stream.of("--bootstrap-server", 
cluster.bootstrapServers()),
+                                
Stream.of(entityOp(brokerIdOrDefault).toArray(new String[0]))),
+                        Stream.of("--entity-type", "brokers", "--describe")
+                );
+                String describeResult = 
captureStandardOut(run(describeCommand));
+                last.set(describeResult);
+
+                return describeResult.contains("invalid=null");
+            }, 5000, () -> "Dynamic broker config was not visible within 5s 
(missing 'invalid=null').\n" + 

Review Comment:
   @lianetm , Hi!
   Thanks for taking time to review this. 
   
   IMHO, the current message is actually correct in this context.
   
   Inside `waitForCondition`, we are specifically waiting for `invalid=null` to 
appear. 
   If this times out, it means `invalid=null` was indeed missing from the 
output.
   
   The check for `sensitive=true` happens after this block, so it doesn't 
affect this timeout message. 
   Please let me know if I misunderstood anything. I want to make sure we're on 
the same page. 🙇‍♂️ 
   
   



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