showuon commented on code in PR #16264:
URL: https://github.com/apache/kafka/pull/16264#discussion_r1634016604


##########
clients/src/test/java/org/apache/kafka/test/TestUtils.java:
##########
@@ -556,10 +557,15 @@ public static Set<TopicPartition> 
generateRandomTopicPartitions(int numTopic, in
      * @return The caught exception cause
      */
     public static <T extends Throwable> T assertFutureThrows(Future<?> future, 
Class<T> exceptionCauseClass) {
-        ExecutionException exception = assertThrows(ExecutionException.class, 
future::get);
-        assertInstanceOf(exceptionCauseClass, exception.getCause(),
-            "Unexpected exception cause " + exception.getCause());
-        return exceptionCauseClass.cast(exception.getCause());
+        try {
+            future.get(5, TimeUnit.SECONDS);
+            ExecutionException exception = 
assertThrows(ExecutionException.class, future::get);
+            assertInstanceOf(exceptionCauseClass, exception.getCause(),
+                    "Unexpected exception cause " + exception.getCause());
+            return exceptionCauseClass.cast(exception.getCause());
+        } catch (Exception ignored) {
+            return null;
+        }

Review Comment:
   Before this change, when future.get throws "non-ExecutionException", it'll 
fail. But after the change, it'll pass. This changes the original semantics. I 
think we can use `catch` to assert what we expected. Ex:
   
   ```
   try {
     future.get(5, sec);
     fail("expected to throw ExecutionException...");
   } catch (TimeoutException e) {
     fail("timeout waiting....");
   } catch (ExecutionException e) {
     ...
   } catch ...
   
   
   ```
   
   WDYT? 
   ```



##########
clients/src/test/java/org/apache/kafka/test/TestUtils.java:
##########
@@ -556,10 +557,15 @@ public static Set<TopicPartition> 
generateRandomTopicPartitions(int numTopic, in
      * @return The caught exception cause
      */
     public static <T extends Throwable> T assertFutureThrows(Future<?> future, 
Class<T> exceptionCauseClass) {
-        ExecutionException exception = assertThrows(ExecutionException.class, 
future::get);
-        assertInstanceOf(exceptionCauseClass, exception.getCause(),
-            "Unexpected exception cause " + exception.getCause());
-        return exceptionCauseClass.cast(exception.getCause());
+        try {
+            future.get(5, TimeUnit.SECONDS);
+            ExecutionException exception = 
assertThrows(ExecutionException.class, future::get);
+            assertInstanceOf(exceptionCauseClass, exception.getCause(),
+                    "Unexpected exception cause " + exception.getCause());
+            return exceptionCauseClass.cast(exception.getCause());
+        } catch (Exception ignored) {
+            return null;
+        }

Review Comment:
   AI saw there's another `future.get` without timeout in L583. Please also fix 
it. Thanks.



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to