From e9723a813bd8ee4d92efb68c0b0910ab9c13ade8 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Thu, 3 Jun 2021 10:57:44 +0100 Subject: Change locks to prevent potential unlock exception --- .../quests/storage/YamlStorageProvider.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java b/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java index 690e6fed..ababef3e 100644 --- a/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java +++ b/src/main/java/com/leonardobishop/quests/storage/YamlStorageProvider.java @@ -24,18 +24,15 @@ public class YamlStorageProvider implements StorageProvider { this.plugin = plugin; } - private void lock(UUID uuid) { + private ReentrantLock lock(UUID uuid) { locks.putIfAbsent(uuid, new ReentrantLock()); - locks.get(uuid).lock(); - } - - private void unlock(UUID uuid) { ReentrantLock lock = locks.get(uuid); - if (lock != null) lock.unlock(); + lock.lock(); + return lock; } public QuestProgressFile loadProgressFile(UUID uuid) { - lock(uuid); + ReentrantLock lock = lock(uuid); QuestProgressFile questProgressFile = new QuestProgressFile(uuid, plugin); try { File directory = new File(plugin.getDataFolder() + File.separator + "playerdata"); @@ -75,14 +72,14 @@ public class YamlStorageProvider implements StorageProvider { ex.printStackTrace(); // fuck } finally { - unlock(uuid); + lock.unlock(); } return questProgressFile; } public void saveProgressFile(UUID uuid, QuestProgressFile questProgressFile) { - lock(uuid); + ReentrantLock lock = lock(uuid); try { List questProgressValues = new ArrayList<>(questProgressFile.getAllQuestProgress()); File directory = new File(plugin.getDataFolder() + File.separator + "playerdata"); @@ -123,7 +120,7 @@ public class YamlStorageProvider implements StorageProvider { e.printStackTrace(); } } finally { - unlock(uuid); + lock.unlock(); } } } -- cgit v1.2.3-70-g09d2