From 4fb632ecdbc4c938e21723d0911b6ff6ad3fe7a4 Mon Sep 17 00:00:00 2001 From: P0nk Date: Thu, 11 Aug 2022 14:45:48 +0200 Subject: [PATCH] Remove monitored locks (fair), use basic version --- src/main/java/client/Character.java | 8 ++--- src/main/java/client/Client.java | 9 +++--- src/main/java/client/inventory/Inventory.java | 5 ++- .../java/client/inventory/ItemFactory.java | 5 ++- .../java/net/server/PlayerBuffStorage.java | 5 ++- .../MonitoredReentrantLockFactory.java | 32 ------------------- .../world/MonsterAggroCoordinator.java | 5 +-- src/main/java/net/server/guild/Guild.java | 5 ++- .../net/server/services/BaseScheduler.java | 19 ++--------- .../task/channel/MobAnimationService.java | 16 ++-------- .../task/channel/MobStatusService.java | 16 ++-------- src/main/java/net/server/world/Party.java | 16 ++-------- src/main/java/net/server/world/World.java | 4 --- .../event/scheduler/EventScriptScheduler.java | 22 ++----------- src/main/java/server/Storage.java | 5 ++- .../java/server/expeditions/Expedition.java | 7 ++-- src/main/java/server/life/Monster.java | 15 +-------- src/main/java/server/maps/GenericPortal.java | 9 +++--- src/main/java/server/maps/HiredMerchant.java | 5 ++- src/main/java/server/maps/MiniDungeon.java | 5 ++- src/main/java/server/maps/PlayerShop.java | 5 ++- src/main/java/server/maps/Reactor.java | 7 ++-- 22 files changed, 50 insertions(+), 175 deletions(-) delete mode 100644 src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index ae10d3f1ee..9ca8e421af 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -45,8 +45,6 @@ import net.packet.Packet; import net.server.PlayerBuffValueHolder; import net.server.PlayerCoolDownValueHolder; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.coordinator.world.InviteCoordinator; import net.server.guild.Alliance; import net.server.guild.Guild; @@ -217,9 +215,9 @@ public class Character extends AbstractCharacterObject { private ScheduledFuture chairRecoveryTask = null; private ScheduledFuture pendantOfSpirit = null; //1122017 private ScheduledFuture cpqSchedule = null; - private final Lock chrLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_CHR, true); - private final Lock evtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EVT, true); - private final Lock petLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PET, true); + private final Lock chrLock = new ReentrantLock(true); + private final Lock evtLock = new ReentrantLock(true); + private final Lock petLock = new ReentrantLock(true); private final Lock prtLock = new ReentrantLock(); private final Lock cpnLock = new ReentrantLock(); private final Map> excluded = new LinkedHashMap<>(); diff --git a/src/main/java/client/Client.java b/src/main/java/client/Client.java index 46224343f7..b929ff035a 100644 --- a/src/main/java/client/Client.java +++ b/src/main/java/client/Client.java @@ -36,8 +36,6 @@ import net.packet.Packet; import net.packet.logging.LoggingUtil; import net.packet.logging.MonitoredChrLogger; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.channel.Channel; import net.server.coordinator.login.LoginBypassCoordinator; import net.server.coordinator.session.Hwid; @@ -81,6 +79,7 @@ import java.util.Date; import java.util.*; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import static java.util.concurrent.TimeUnit.SECONDS; @@ -122,9 +121,9 @@ public class Client extends ChannelInboundHandlerAdapter { private byte gender = -1; private boolean disconnecting = false; private final Semaphore actionsSemaphore = new Semaphore(7); - private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); - private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); - private final Lock announcerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ANNOUNCER, true); + private final Lock lock = new ReentrantLock(true); + private final Lock encoderLock = new ReentrantLock(true); + private final Lock announcerLock = new ReentrantLock(true); // thanks Masterrulax & try2hack for pointing out a bottleneck issue with shared locks, shavit for noticing an opportunity for improvement private Calendar tempBanCalendar; private int votePoints; diff --git a/src/main/java/client/inventory/Inventory.java b/src/main/java/client/inventory/Inventory.java index c7cebaf0ce..6e1c9e433c 100644 --- a/src/main/java/client/inventory/Inventory.java +++ b/src/main/java/client/inventory/Inventory.java @@ -25,8 +25,6 @@ import client.Character; import client.Client; import client.inventory.manipulator.InventoryManipulator; import constants.inventory.ItemConstants; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import server.ItemInformationProvider; @@ -36,6 +34,7 @@ import tools.Pair; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Matze, Ronan @@ -44,7 +43,7 @@ public class Inventory implements Iterable { private static final Logger log = LoggerFactory.getLogger(Inventory.class); protected final Map inventory; protected final InventoryType type; - protected final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.INVENTORY, true); + protected final Lock lock = new ReentrantLock(true); protected Character owner; protected byte slotLimit; diff --git a/src/main/java/client/inventory/ItemFactory.java b/src/main/java/client/inventory/ItemFactory.java index 3124c62687..1c24f0108a 100644 --- a/src/main/java/client/inventory/ItemFactory.java +++ b/src/main/java/client/inventory/ItemFactory.java @@ -20,8 +20,6 @@ */ package client.inventory; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import tools.DatabaseConnection; import tools.Pair; @@ -29,6 +27,7 @@ import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Flav @@ -52,7 +51,7 @@ public enum ItemFactory { static { for (int i = 0; i < lockCount; i++) { - locks[i] = MonitoredReentrantLockFactory.createLock(MonitoredLockType.ITEM, true); + locks[i] = new ReentrantLock(true); } } diff --git a/src/main/java/net/server/PlayerBuffStorage.java b/src/main/java/net/server/PlayerBuffStorage.java index fb4a4b873e..65874296fd 100644 --- a/src/main/java/net/server/PlayerBuffStorage.java +++ b/src/main/java/net/server/PlayerBuffStorage.java @@ -22,8 +22,6 @@ package net.server; import client.Disease; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.life.MobSkill; import tools.Pair; @@ -31,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Danny//changed to map :3 @@ -38,7 +37,7 @@ import java.util.concurrent.locks.Lock; */ public class PlayerBuffStorage { private final int id = (int) (Math.random() * 100); - private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.BUFF_STORAGE, true); + private final Lock lock = new ReentrantLock(true); private final Map> buffs = new HashMap<>(); private final Map>> diseases = new HashMap<>(); diff --git a/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java b/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java deleted file mode 100644 index 94f552da12..0000000000 --- a/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2019 RonanLana - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package net.server.audit.locks.factory; - -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.active.TrackerReentrantLock; - -/** - * @author RonanLana - */ -public class MonitoredReentrantLockFactory { - public static TrackerReentrantLock createLock(MonitoredLockType id, boolean fair) { - return new TrackerReentrantLock(id, fair); - } -} diff --git a/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java b/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java index a722e20841..b5e8bf4113 100644 --- a/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java +++ b/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java @@ -22,9 +22,6 @@ package net.server.coordinator.world; import client.Character; import config.YamlConfig; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.TimerManager; import server.life.Monster; import server.maps.MapleMap; @@ -41,7 +38,7 @@ import java.util.concurrent.locks.ReentrantLock; */ public class MonsterAggroCoordinator { private final Lock lock = new ReentrantLock(); - private final MonitoredReentrantLock idleLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO_IDLE, true); + private final Lock idleLock = new ReentrantLock(true); private long lastStopTime = Server.getInstance().getCurrentTime(); private ScheduledFuture aggroMonitor = null; diff --git a/src/main/java/net/server/guild/Guild.java b/src/main/java/net/server/guild/Guild.java index ac86a95c73..2f8ed78034 100644 --- a/src/main/java/net/server/guild/Guild.java +++ b/src/main/java/net/server/guild/Guild.java @@ -27,8 +27,6 @@ import config.YamlConfig; import net.packet.Packet; import net.server.PlayerStorage; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.channel.Channel; import net.server.coordinator.matchchecker.MatchCheckerCoordinator; import net.server.coordinator.world.InviteCoordinator; @@ -45,6 +43,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public class Guild { private static final Logger log = LoggerFactory.getLogger(Guild.class); @@ -54,7 +53,7 @@ public class Guild { } private final List members; - private final Lock membersLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.GUILD, true); + private final Lock membersLock = new ReentrantLock(true); private final String[] rankTitles = new String[5]; // 1 = master, 2 = jr, 5 = lowest member private String name, notice; diff --git a/src/main/java/net/server/services/BaseScheduler.java b/src/main/java/net/server/services/BaseScheduler.java index 6d15e0fb16..0b764cf06a 100644 --- a/src/main/java/net/server/services/BaseScheduler.java +++ b/src/main/java/net/server/services/BaseScheduler.java @@ -21,16 +21,16 @@ package net.server.services; import config.YamlConfig; import net.server.Server; -import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.TimerManager; import tools.Pair; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Ronan @@ -42,17 +42,14 @@ public abstract class BaseScheduler { private final Map> registeredEntries = new HashMap<>(); private ScheduledFuture schedulerTask = null; - private MonitoredReentrantLock schedulerLock; + private final Lock schedulerLock = new ReentrantLock(true); private final Runnable monitorTask = () -> runBaseSchedule(); protected BaseScheduler(MonitoredLockType lockType) { - schedulerLock = MonitoredReentrantLockFactory.createLock(lockType, true); } // NOTE: practice EXTREME caution when adding external locks to the scheduler system, if you don't know what you're doing DON'T USE THIS. protected BaseScheduler(MonitoredLockType lockType, List extLocks) { - schedulerLock = MonitoredReentrantLockFactory.createLock(lockType, true); - externalLocks.addAll(extLocks); } @@ -184,15 +181,5 @@ public abstract class BaseScheduler { unlockScheduler(); externalLocks.clear(); } - - disposeLocks(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - schedulerLock = schedulerLock.dispose(); } } diff --git a/src/main/java/net/server/services/task/channel/MobAnimationService.java b/src/main/java/net/server/services/task/channel/MobAnimationService.java index 1eff4728c1..5e545dbc25 100644 --- a/src/main/java/net/server/services/task/channel/MobAnimationService.java +++ b/src/main/java/net/server/services/task/channel/MobAnimationService.java @@ -20,15 +20,14 @@ package net.server.services.task.channel; import config.YamlConfig; -import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.services.BaseScheduler; import net.server.services.BaseService; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Ronan @@ -63,7 +62,7 @@ public class MobAnimationService extends BaseService { private class MobAnimationScheduler extends BaseScheduler { Set onAnimationMobs = new HashSet<>(1000); - private MonitoredReentrantLock animationLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_MOBANIMAT, true); + private final Lock animationLock = new ReentrantLock(true); public MobAnimationScheduler() { super(MonitoredLockType.CHANNEL_MOBACTION); @@ -98,18 +97,9 @@ public class MobAnimationService extends BaseService { @Override public void dispose() { - disposeLocks(); super.dispose(); } - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - animationLock = animationLock.dispose(); - } - } } diff --git a/src/main/java/net/server/services/task/channel/MobStatusService.java b/src/main/java/net/server/services/task/channel/MobStatusService.java index bdf9547901..026e557f55 100644 --- a/src/main/java/net/server/services/task/channel/MobStatusService.java +++ b/src/main/java/net/server/services/task/channel/MobStatusService.java @@ -21,10 +21,7 @@ package net.server.services.task.channel; import client.status.MonsterStatusEffect; import config.YamlConfig; -import net.server.audit.LockCollector; import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.services.BaseScheduler; import net.server.services.BaseService; @@ -32,6 +29,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Ronan @@ -71,7 +70,7 @@ public class MobStatusService extends BaseService { private class MobStatusScheduler extends BaseScheduler { private final Map registeredMobStatusOvertime = new HashMap<>(); - private MonitoredReentrantLock overtimeStatusLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHANNEL_OVTSTATUS, true); + private final Lock overtimeStatusLock = new ReentrantLock(true); private class MobStatusOvertimeEntry { private int procCount; @@ -144,18 +143,9 @@ public class MobStatusService extends BaseService { @Override public void dispose() { - disposeLocks(); super.dispose(); } - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - overtimeStatusLock = overtimeStatusLock.dispose(); - } - } } diff --git a/src/main/java/net/server/world/Party.java b/src/main/java/net/server/world/Party.java index 90d33468eb..c466418fdf 100644 --- a/src/main/java/net/server/world/Party.java +++ b/src/main/java/net/server/world/Party.java @@ -24,10 +24,6 @@ package net.server.world; import client.Character; import client.Client; import config.YamlConfig; -import net.server.audit.LockCollector; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.coordinator.matchchecker.MatchCheckerCoordinator; import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType; import scripting.event.EventInstanceManager; @@ -38,6 +34,8 @@ import tools.PacketCreator; import java.util.*; import java.util.Map.Entry; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public class Party { @@ -52,7 +50,7 @@ public class Party { private final Map doors = new HashMap<>(); - private MonitoredReentrantLock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.PARTY, true); + private final Lock lock = new ReentrantLock(true); public Party(int id, PartyCharacter chrfor) { this.leaderId = chrfor.getId(); @@ -281,14 +279,6 @@ public class Party { } } - public void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - lock = lock.dispose(); - } - @Override public int hashCode() { final int prime = 31; diff --git a/src/main/java/net/server/world/World.java b/src/main/java/net/server/world/World.java index c473aba652..2bdf1b3ada 100644 --- a/src/main/java/net/server/world/World.java +++ b/src/main/java/net/server/world/World.java @@ -2103,10 +2103,6 @@ public class World { partyLock.unlock(); } - for (Party p : pList) { - p.disposeLocks(); - } - closeWorldServices(); } diff --git a/src/main/java/scripting/event/scheduler/EventScriptScheduler.java b/src/main/java/scripting/event/scheduler/EventScriptScheduler.java index f0d1e85bc3..ad3c0bbccf 100644 --- a/src/main/java/scripting/event/scheduler/EventScriptScheduler.java +++ b/src/main/java/scripting/event/scheduler/EventScriptScheduler.java @@ -21,10 +21,6 @@ package scripting.event.scheduler; import config.YamlConfig; import net.server.Server; -import net.server.audit.LockCollector; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.ThreadManager; import server.TimerManager; @@ -34,6 +30,8 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Ronan @@ -45,13 +43,9 @@ public class EventScriptScheduler { private final Map registeredEntries = new HashMap<>(); private ScheduledFuture schedulerTask = null; - private MonitoredReentrantLock schedulerLock; + private final Lock schedulerLock = new ReentrantLock(true); private final Runnable monitorTask = () -> runBaseSchedule(); - public EventScriptScheduler() { - schedulerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_SCHDL, true); - } - private void runBaseSchedule() { List toRemove; Map registeredEntriesCopy; @@ -148,16 +142,6 @@ public class EventScriptScheduler { } finally { schedulerLock.unlock(); } - - disposeLocks(); }); } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - schedulerLock = schedulerLock.dispose(); - } } diff --git a/src/main/java/server/Storage.java b/src/main/java/server/Storage.java index 2e06ffe144..67e64e75b9 100644 --- a/src/main/java/server/Storage.java +++ b/src/main/java/server/Storage.java @@ -23,8 +23,6 @@ import client.inventory.InventoryType; import client.inventory.Item; import client.inventory.ItemFactory; import constants.game.GameConstants; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import provider.Data; @@ -42,6 +40,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Matze @@ -57,7 +56,7 @@ public class Storage { private byte slots; private final Map> typeItems = new HashMap<>(); private List items = new LinkedList<>(); - private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.STORAGE, true); + private final Lock lock = new ReentrantLock(true); private Storage(int id, byte slots, int meso) { this.id = id; diff --git a/src/main/java/server/expeditions/Expedition.java b/src/main/java/server/expeditions/Expedition.java index 9a7a43b141..2becc69565 100644 --- a/src/main/java/server/expeditions/Expedition.java +++ b/src/main/java/server/expeditions/Expedition.java @@ -28,9 +28,6 @@ import constants.id.MobId; import net.packet.Packet; import net.server.PlayerStorage; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.channel.Channel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +42,8 @@ import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; @@ -100,7 +99,7 @@ public class Expedition { private final boolean silent; private final int minSize; private final int maxSize; - private final MonitoredReentrantLock pL = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EIM_PARTY, true); + private final Lock pL = new ReentrantLock(true); public Expedition(Character player, ExpeditionType met, boolean sil, int minPlayers, int maxPlayers) { leader = player; diff --git a/src/main/java/server/life/Monster.java b/src/main/java/server/life/Monster.java index a11ad18ebe..25de54c4be 100644 --- a/src/main/java/server/life/Monster.java +++ b/src/main/java/server/life/Monster.java @@ -29,10 +29,6 @@ import config.YamlConfig; import constants.id.MobId; import constants.skills.*; import net.packet.Packet; -import net.server.audit.LockCollector; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.channel.Channel; import net.server.coordinator.world.MonsterAggroCoordinator; import net.server.services.task.channel.MobAnimationService; @@ -101,7 +97,7 @@ public class Monster extends AbstractLoadedLife { private boolean availablePuppetUpdate = true; private final Lock externalLock = new ReentrantLock(); - private MonitoredReentrantLock monsterLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB, true); + private final Lock monsterLock = new ReentrantLock(true); private final Lock statiLock = new ReentrantLock(); private final Lock animationLock = new ReentrantLock(); private final Lock aggroUpdateLock = new ReentrantLock(); @@ -2197,14 +2193,5 @@ public class Monster extends AbstractLoadedLife { } this.getMap().dismissRemoveAfter(this); - disposeLocks(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - monsterLock = monsterLock.dispose(); } } \ No newline at end of file diff --git a/src/main/java/server/maps/GenericPortal.java b/src/main/java/server/maps/GenericPortal.java index 8ba35f21a3..02d9af95b5 100644 --- a/src/main/java/server/maps/GenericPortal.java +++ b/src/main/java/server/maps/GenericPortal.java @@ -25,13 +25,12 @@ import client.Character; import client.Client; import constants.game.GameConstants; import constants.id.MapId; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.MonitoredReentrantLock; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import scripting.portal.PortalScriptManager; import tools.PacketCreator; import java.awt.*; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public class GenericPortal implements Portal { private String name; @@ -43,7 +42,7 @@ public class GenericPortal implements Portal { private int id; private String scriptName; private boolean portalState; - private MonitoredReentrantLock scriptLock = null; + private Lock scriptLock = null; public GenericPortal(int type) { this.type = type; @@ -120,7 +119,7 @@ public class GenericPortal implements Portal { if (scriptName != null) { if (scriptLock == null) { - scriptLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.PORTAL, true); + scriptLock = new ReentrantLock(true); } } else { scriptLock = null; diff --git a/src/main/java/server/maps/HiredMerchant.java b/src/main/java/server/maps/HiredMerchant.java index dfd9bc9668..c668e2cd24 100644 --- a/src/main/java/server/maps/HiredMerchant.java +++ b/src/main/java/server/maps/HiredMerchant.java @@ -33,8 +33,6 @@ import client.processor.npc.FredrickProcessor; import config.YamlConfig; import net.packet.Packet; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.ItemInformationProvider; import server.Trade; import tools.DatabaseConnection; @@ -50,6 +48,7 @@ import java.time.Instant; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author XoticStory @@ -76,7 +75,7 @@ public class HiredMerchant extends AbstractMapObject { private final Visitor[] visitors = new Visitor[3]; private final LinkedList visitorHistory = new LinkedList<>(); private final LinkedHashSet blacklist = new LinkedHashSet<>(); // case-sensitive character names - private final Lock visitorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.VISITOR_MERCH, true); + private final Lock visitorLock = new ReentrantLock(true); private record Visitor(Character chr, Instant enteredAt) {} diff --git a/src/main/java/server/maps/MiniDungeon.java b/src/main/java/server/maps/MiniDungeon.java index 73e6030829..f69cdb6d43 100644 --- a/src/main/java/server/maps/MiniDungeon.java +++ b/src/main/java/server/maps/MiniDungeon.java @@ -20,8 +20,6 @@ package server.maps; import client.Character; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.TimerManager; import tools.PacketCreator; @@ -29,6 +27,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import static java.util.concurrent.TimeUnit.SECONDS; @@ -38,7 +37,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; public class MiniDungeon { List players = new ArrayList<>(); ScheduledFuture timeoutTask = null; - Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MINIDUNGEON, true); + private final Lock lock = new ReentrantLock(true); int baseMap; long expireTime; diff --git a/src/main/java/server/maps/PlayerShop.java b/src/main/java/server/maps/PlayerShop.java index dad0751db7..ab110cc008 100644 --- a/src/main/java/server/maps/PlayerShop.java +++ b/src/main/java/server/maps/PlayerShop.java @@ -29,8 +29,6 @@ import client.inventory.Item; import client.inventory.manipulator.InventoryManipulator; import client.inventory.manipulator.KarmaManipulator; import net.packet.Packet; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import server.Trade; import tools.PacketCreator; import tools.Pair; @@ -38,6 +36,7 @@ import tools.Pair; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Matze @@ -56,7 +55,7 @@ public class PlayerShop extends AbstractMapObject { private final List bannedList = new ArrayList<>(); private final List> chatLog = new LinkedList<>(); private final Map chatSlot = new LinkedHashMap<>(); - private final Lock visitorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.VISITOR_PSHOP, true); + private final Lock visitorLock = new ReentrantLock(true); public PlayerShop(Character owner, String description, int itemid) { this.setPosition(owner.getPosition()); diff --git a/src/main/java/server/maps/Reactor.java b/src/main/java/server/maps/Reactor.java index 444d853c04..d3c73dbc53 100644 --- a/src/main/java/server/maps/Reactor.java +++ b/src/main/java/server/maps/Reactor.java @@ -24,8 +24,6 @@ package server.maps; import client.Client; import config.YamlConfig; import net.packet.Packet; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import net.server.services.task.channel.OverallService; import net.server.services.type.ChannelServices; import scripting.reactor.ReactorScriptManager; @@ -38,6 +36,7 @@ import java.awt.*; import java.util.List; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * @author Lerk @@ -58,8 +57,8 @@ public class Reactor extends AbstractMapObject { private Runnable delayedRespawnRun = null; private GuardianSpawnPoint guardian = null; private byte facingDirection = 0; - private final Lock reactorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.REACTOR, true); - private final Lock hitLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.REACTOR_HIT, true); + private final Lock reactorLock = new ReentrantLock(true); + private final Lock hitLock = new ReentrantLock(true); public Reactor(ReactorStats stats, int rid) { this.evstate = (byte) 0;