-bash-4.1$ cat blocked_threads.awk
#!/bin/awk -f
{
if ($0 ~ "- locked" || $0 ~ "- waiting to lock") {
s[i++]=$0
}
}
END {
for (i in s) {
if (s[i] ~ "waiting to lock") {
split(s[i],t)
for (j in s) {
split(s[j],u)
if (s[j] ~ "- locked" && u[3] ~ t[5]) {
print u[3],u[5]," is blocking ",t[7]
break
}
}
}
}
}
Copy and paste the awk code above into a file name blocked_theads.awk (or whatever you want)
chmod u+x blocked_threads.awk
…and run…
-bash-4.1$ ./blocked_thread.awk /tmp/thread_dump_201207261821.dmp
<0x0000000776ee2400> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x00000007928ff1b0> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000072e80b388> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000072b10e140> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000072d630478> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x00000007114848a8> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x0000000732527c30> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x00000007a89bbde8> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x00000007a5735f68> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x0000000776df6c18> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000078a6752e0> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x00000007737f4368> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000073cd09230> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000072e80b388> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
<0x000000076e939ac8> com.foo.commerce.order.fooOrderImpl) is blocking com.foo.commerce.order.fooOrderImpl)
-bash-4.1$
1 comment for “awk script to print blocked threads in a java thread dump”