From 74423d6dc085f23fc01ddc90a84ebe34a7bb06f0 Mon Sep 17 00:00:00 2001 From: Ivan Pekov Date: Thu, 28 Oct 2021 18:41:35 +0300 Subject: [PATCH] Add missed locking onto expansions --- .../manager/LocalExpansionManager.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java b/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java index 872215c..7a2cd58 100644 --- a/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java +++ b/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java @@ -281,8 +281,13 @@ public final class LocalExpansionManager implements Listener { @ApiStatus.Internal public boolean unregister(@NotNull final PlaceholderExpansion expansion) { - if (expansions.remove(expansion.getIdentifier()) == null) { - return false; + expansionsLock.lock(); + try { + if (expansions.remove(expansion.getIdentifier()) == null) { + return false; + } + } finally { + expansionsLock.unlock(); } Bukkit.getPluginManager().callEvent(new ExpansionUnregisterEvent(expansion)); @@ -335,12 +340,17 @@ public final class LocalExpansionManager implements Listener { } private void unregisterAll() { - for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) { - if (expansion.persist()) { - continue; - } + expansionsLock.lock(); + try { + for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) { + if (expansion.persist()) { + continue; + } - expansion.unregister(); + expansion.unregister(); + } + } finally { + expansionsLock.unlock(); } } @@ -397,7 +407,7 @@ public final class LocalExpansionManager implements Listener { } plugin.getLogger().warning("There was an issue with loading an expansion."); - + return null; } }