Wir haben den klassischen Spring/Hibernate/Mysql-Stack in Tomcat 5.5 ausgeführt. Gelegentlich kommt es zu einem Deadlock, wenn der Versuch ausläuft, eine Tabellenzeile zu sperren. Eine Art Deadlock-Ausnahme wird ausgelöst.Wie finden Sie beide Threads von einem Deadlock?
Die Ausnahme ist klar und die Stack-Trace zeigt an, was schief gelaufen ist. Aber es zeigt nicht den anderen Thread, der die tatsächliche Sperre hält. Wenn ich nicht weiß, was dieser Thread macht, ist alles nur eine Nadel im Heuhaufen.
FRAGE: Gibt es eine Möglichkeit, den anderen Thread zu finden?
Danke!
Jan
Wo kommt die Ausnahme von - mysql? Kannst du einen Stacktrace buchen? –
Woher wissen Sie, dass es nur ein anderer Thread ist? Es könnte eine lange Kette von Threads in einem Deadlock beteiligt sein. –
Ich kenne die Anzahl der beteiligten Threads natürlich nicht. Aber die Anwendung ist ein typischer "one request = one thread" -Fall. Wir machen nichts mit Threading. Und da die Sperren exklusiv sind, kann es zu dieser Zeit nur einen Thread geben. –