Skip to content

Commit 577d102

Browse files
authored
Print thread dump when ES fails to start during Docker packaging tests (#119477)
1 parent 7297390 commit 577d102

File tree

1 file changed

+21
-2
lines changed
  • qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker

1 file changed

+21
-2
lines changed

qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker/Docker.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,32 @@ public static void waitForElasticsearchToStart() {
206206
ps output:
207207
%s
208208
209-
stdout():
209+
Stdout:
210210
%s
211211
212212
Stderr:
213+
%s
214+
215+
Thread dump:
213216
%s\
214-
""", psOutput, dockerLogs.stdout(), dockerLogs.stderr()));
217+
""", psOutput, dockerLogs.stdout(), dockerLogs.stderr(), getThreadDump()));
218+
}
219+
}
220+
221+
/**
222+
* @return output of jstack for currently running Java process
223+
*/
224+
private static String getThreadDump() {
225+
try {
226+
String pid = dockerShell.run("/usr/share/elasticsearch/jdk/bin/jps | grep -v 'Jps' | awk '{print $1}'").stdout();
227+
if (pid.isEmpty() == false) {
228+
return dockerShell.run("/usr/share/elasticsearch/jdk/bin/jstack " + Integer.parseInt(pid)).stdout();
229+
}
230+
} catch (Exception e) {
231+
logger.error("Failed to get thread dump", e);
215232
}
233+
234+
return "";
216235
}
217236

218237
/**

0 commit comments

Comments
 (0)