Only unlock if previously locked (#2489)

This commit is contained in:
Hannes Greule 2023-11-08 21:39:25 +01:00 committed by GitHub
parent 1996a38b46
commit 46dd71e807
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -100,7 +100,6 @@ import java.util.TimeZone;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
@ -406,7 +405,8 @@ public class LocalSession implements TextureHolder {
*/
public void clearHistory() {
//FAWE start
if (Fawe.isMainThread() && !historyWriteLock.tryLock()) {
boolean mainThread = Fawe.isMainThread();
if (mainThread && !historyWriteLock.tryLock()) {
// Do not make main thread wait if we cannot immediately clear history (on player logout usually)
TaskManager.taskManager().async(this::clearHistoryTask);
return;
@ -414,7 +414,10 @@ public class LocalSession implements TextureHolder {
try {
clearHistoryTask();
} finally {
historyWriteLock.unlock();
// only if we are on the main thread, we ever called tryLock -> need to unlock again
if (mainThread) {
historyWriteLock.unlock();
}
}
}