Yet another variation on this theme. This is good because it will allow you to quickly go to the problem thread.
#!/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
}
}
}
}
}
bash-4.1$ awk -f ~/blocked.awk *1746* | sort | uniq -c | sort -nr | head -5
283 <0x0000000766283810> atg.adapter.gsa.GSAItem) is blocking atg.adapter.gsa.GSAItem)
43 <0x000000063cbfad60> atg.adapter.gsa.GSAItemDescriptor) is blocking atg.adapter.gsa.GSAItemDescriptor)
11 <0x000000064c282cf8> com.express.commerce.order.ExpressOrderHolder$$EnhancerBySpringCGLIB$$27225c0d) is blocking com.express.commerce.order.ExpressOrderHolder$$EnhancerBySpringCGLIB$$27225c0d)
4 <0x00000006631b15a8> com.express.commerce.order.ExpressOrderImpl) is blocking com.express.commerce.order.ExpressOrderImpl)
3 <0x00000007ab9f9670> com.express.commerce.order.ExpressOrderImpl) is blocking com.express.commerce.order.ExpressOrderImpl)
bash-4.1$