2010-09-07 6 views
7

Es gab verschiedene Beiträge zum Protokollieren der Aktivität (Start, Commit & Rollback) von Spring Transaktionsmanager. Ich bin jedoch kürzlich auf ein Deadlock-Problem gestoßen, bei dem das Protokollieren nur der Aktivität nicht ausreicht.So protokollieren Sie Spring transaction content

Das grundlegende Problem in unserem Code ist eine unordentliche Verwendung der Transaktion propagiert Required und Requires_NEW. Es gibt so viele Methodenaufrufe hin und her, dass wir viele Transaktionen aufeinander gestapelt haben. Leider ist die Codebasis riesig und die Lösung dringlich ... (Wir alle wissen, was das ist.)

Das Problem war ein Deadlock, weil Code Abfrage-Entitäten in einer Transaktion hinzugefügt wurde, die in einer anderen sequenziell geändert wurden Transaktion. Spring spuckt eine Exception aus, die angibt, dass das Update von Entity X abgelaufen ist, weil es gesperrt ist. Nun, das zu wissen ist nett, aber wie findet man den fehlerhaften Code: Die Abfrage, die das frühe Sperren durchführt.

Meine Frage (endlich): Gibt es eine Möglichkeit, die Entitäten, die einer Transaktion hinzugefügt werden, zu protokollieren? Auf diese Weise kann ich gezielt nach Transaktionen suchen, die die Entität sperren, über die sich Spring beschweren.

Danke! :-)

Antwort

0

Versuchen Sie, Abfragen in Ihrem ORM zu protokollieren. Vielleicht ist es einfacher, eine "schlechte" Transaktion zu finden.

1

Spring Delegaten zu einem Transaktionsmanager, so dass Spring nicht weiß, welche Elemente in der Transaktion berührt werden, der Transaktionsmanager tut. Wie Donz sagte, ist der Blick auf den Transaktionsmanager für Informationen der beste investigative Ansatz.

Sie könnten auch alle Transaktionsdefinitionen gehen und REQUIRES_NEW aus alles entfernen, außer nur schreiben/schreiben immer Typ Methoden (wie Prüfung oder Protokollierung). Wenn Sie REQUIRES_NEW in Ihrer Hauptgeschäftslogik haben, handelt es sich um einen Fehler oder ein sehr merkwürdiges Design. Blind entfernen könnte weniger Nebenwirkungen haben, als Sie denken.

Verwandte Themen