In einem symfony2-Projekt, an dem ich gerade arbeite, kommt es manchmal zu dead locks beim Aufruf von flush
auf meinem Entitymanager. Dies führt zu einer Ausnahme. Meistens tritt dieser Fehler nur einmal auf und ein zweiter Versuch, dieselben Daten einzufügen, funktioniert korrekt.
Gibt es einen guten Ansatz, dieselbe Transaktion erneut auszuführen (zu leeren). So einfach
%Vor%geht nicht, da der Entitymanager geschlossen wird, wenn ein Fehler auftritt.
Ich habe Ссылка Bit gefunden, das keine Lösung bietet.
Ich würde verwenden explizite Abgrenzung der Transaktionen , um den Stillstand hoffentlich zu verhindern. Standardmäßig ist nur flush()
in eine Transaktion eingebunden.
Alternativ können Sie möglicherweise Ihre Prozedur ändern, um die DQL UPDATE
-Abfrage zu verwenden, die atomar sein sollte.
Oder senden Sie die Anfrage erneut an die Aktion (mit einem gewissen Rekursionslimit).
Ich bin mir nicht sicher, ob es eine gute Möglichkeit gibt, den Entity Manager neu zu starten, aber die Arbeitseinheit beizubehalten.