pan3793 commented on code in PR #8682:
URL: https://github.com/apache/hadoop/pull/8682#discussion_r3811361992


##########
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java:
##########
@@ -399,11 +399,13 @@ public static void waitFor(final Supplier<Boolean> check,
     }
 
     if (!result) {
+      // Dump now, while the threads are still hung: TimedOutTestsListener
+      // only sees the failure once the test and its teardown have unwound.
+      TimedOutTestsListener.dumpForTimeout("GenericTestUtils.waitFor");
       final String exceptionErrorMsg = "Timed out waiting for condition. "
           + (org.apache.commons.lang3.StringUtils.isNotEmpty(errorMsg)
-          ? "Error Message: " + errorMsg : "")
-          + "\nThread diagnostics:\n" +
-          TimedOutTestsListener.buildThreadDiagnosticString();
+          ? "Error Message: " + errorMsg + " " : "")
+          + TimedOutTestsListener.DUMP_PRINTED_MARKER;

Review Comment:
   `DUMP_PRINTED_MARKER` ("Thread dump printed to stderr.") is appended
   unconditionally, but `dumpForTimeout` may have printed nothing — 
`shouldDump()`
   returns false when `-Dhadoop.test.timedout.dump=false` or the per-JVM limit 
is
   reached. The message then asserts a dump happened when it didn't, and the
   listener's `dumpAlreadyPrinted()` sees the marker and stays quiet. Gate the 
marker
   on whether a dump was actually emitted (e.g., have `dumpForTimeout` return 
whether
   it printed).



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


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

Reply via email to