Correctly queue edits

Synchronising on the LocalSession ends up being dangerous as it's a craftbukkit thread, leading to blocking issues if something goes wrong in an edit, made worse by the fact craftbukkit threads like to interfere with each other sometimes, and also cause OOMs and hanging when there are too many of them.
This commit is contained in:
dordsor21
2020-10-08 10:53:57 +01:00
parent a64a1ab09e
commit 2c27b9c02a
4 changed files with 10 additions and 11 deletions

View File

@ -649,13 +649,12 @@ public final class PlatformCommandManager {
} else {
actor.decline();
}
LocalSession session = worldEdit.getSessionManager().get(actor);
synchronized (session) {
actor.runAction(() -> {
SessionKey key = actor.getSessionKey();
if (key.isActive()) {
PlatformCommandManager.this.handleCommandOnCurrentThread(event);
}
}
}, false, true);
}, Fawe.isMainThread());
}