From 064e12a57b958d74f6a7441e1d07e5ed0cef7c2e Mon Sep 17 00:00:00 2001 From: catbref Date: Wed, 2 Dec 2020 13:16:18 +0000 Subject: [PATCH] Improve documentation regarding deadlock in EventBus --- src/main/java/org/qortal/event/EventBus.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/qortal/event/EventBus.java b/src/main/java/org/qortal/event/EventBus.java index 63c80143..09496d11 100644 --- a/src/main/java/org/qortal/event/EventBus.java +++ b/src/main/java/org/qortal/event/EventBus.java @@ -22,18 +22,25 @@ public enum EventBus { /** * WARNING: before calling this method, - * make sure repository holds no locks, e.g. by calling + * make sure current thread's repository session + * holds no locks, e.g. by calling + * repository.saveChanges() or * repository.discardChanges(). *

* This is because event listeners might open a new * repository session which will deadlock HSQLDB * if it tries to CHECKPOINT. *

- * The HSQLDB deadlock occurs because the caller's - * repository session blocks the CHECKPOINT until - * their transaction is closed, yet event listeners - * new sessions are blocked until CHECKPOINT is - * completed, hence deadlock. + * The HSQLDB deadlock path is: + *

*/ public void notify(Event event) { List clonedListeners;