From 54878ebe8c454b649bca5c04d37214ddc0ff1222 Mon Sep 17 00:00:00 2001 From: P0nk Date: Thu, 11 Aug 2022 14:26:23 +0200 Subject: [PATCH] Remove monitored locks with default fairness, use basic version --- src/main/java/client/Character.java | 5 ++-- src/main/java/client/MonsterBook.java | 5 ++-- .../MonitoredReentrantLockFactory.java | 4 ---- .../session/SessionInitialization.java | 5 ++-- .../world/MonsterAggroCoordinator.java | 16 +++---------- .../java/scripting/event/EventManager.java | 24 ++++--------------- src/main/java/server/CashShop.java | 5 ++-- src/main/java/server/life/Monster.java | 13 +++++----- src/main/java/server/maps/MapItem.java | 5 ++-- 9 files changed, 25 insertions(+), 57 deletions(-) diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 6b72085e54..ae10d3f1ee 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -94,6 +94,7 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -219,8 +220,8 @@ public class Character extends AbstractCharacterObject { 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 prtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PRT); - private final Lock cpnLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_CPN); + private final Lock prtLock = new ReentrantLock(); + private final Lock cpnLock = new ReentrantLock(); private final Map> excluded = new LinkedHashMap<>(); private final Set excludedItems = new LinkedHashSet<>(); private final Set disabledPartySearchInvites = new LinkedHashSet<>(); diff --git a/src/main/java/client/MonsterBook.java b/src/main/java/client/MonsterBook.java index d354ab84e7..cb3e882e76 100644 --- a/src/main/java/client/MonsterBook.java +++ b/src/main/java/client/MonsterBook.java @@ -21,8 +21,6 @@ */ package client; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import tools.DatabaseConnection; import tools.PacketCreator; @@ -33,13 +31,14 @@ import java.sql.SQLException; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public final class MonsterBook { private int specialCard = 0; private int normalCard = 0; private int bookLevel = 1; private final Map cards = new LinkedHashMap<>(); - private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.BOOK); + private final Lock lock = new ReentrantLock(); public Set> getCardSet() { lock.lock(); diff --git a/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java b/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java index b127c0d5c8..94f552da12 100644 --- a/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java +++ b/src/main/java/net/server/audit/locks/factory/MonitoredReentrantLockFactory.java @@ -26,10 +26,6 @@ import net.server.audit.locks.active.TrackerReentrantLock; * @author RonanLana */ public class MonitoredReentrantLockFactory { - public static TrackerReentrantLock createLock(MonitoredLockType id) { - return new TrackerReentrantLock(id); - } - public static TrackerReentrantLock createLock(MonitoredLockType id, boolean fair) { return new TrackerReentrantLock(id, fair); } diff --git a/src/main/java/net/server/coordinator/session/SessionInitialization.java b/src/main/java/net/server/coordinator/session/SessionInitialization.java index 6e160099de..627175d117 100644 --- a/src/main/java/net/server/coordinator/session/SessionInitialization.java +++ b/src/main/java/net/server/coordinator/session/SessionInitialization.java @@ -1,7 +1,5 @@ package net.server.coordinator.session; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,6 +8,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** * Manages session initialization using remote host (ip address). @@ -24,7 +23,7 @@ public class SessionInitialization { SessionInitialization() { for (int i = 0; i < 100; i++) { - locks.add(MonitoredReentrantLockFactory.createLock(MonitoredLockType.SERVER_LOGIN_COORD)); + locks.add(new ReentrantLock()); } } diff --git a/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java b/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java index f80a181722..a722e20841 100644 --- a/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java +++ b/src/main/java/net/server/coordinator/world/MonsterAggroCoordinator.java @@ -22,7 +22,6 @@ package net.server.coordinator.world; import client.Character; 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; @@ -34,13 +33,14 @@ 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 */ public class MonsterAggroCoordinator { - - private MonitoredReentrantLock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO); + private final Lock lock = new ReentrantLock(); private final MonitoredReentrantLock idleLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO_IDLE, true); private long lastStopTime = Server.getInstance().getCurrentTime(); @@ -375,15 +375,5 @@ public class MonsterAggroCoordinator { } finally { lock.unlock(); } - - disposeLocks(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - lock = lock.dispose(); } } diff --git a/src/main/java/scripting/event/EventManager.java b/src/main/java/scripting/event/EventManager.java index 34ce725f5e..8567b93330 100644 --- a/src/main/java/scripting/event/EventManager.java +++ b/src/main/java/scripting/event/EventManager.java @@ -25,10 +25,6 @@ import client.Character; import config.YamlConfig; import constants.game.GameConstants; 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 net.server.channel.Channel; import net.server.guild.Guild; import net.server.world.Party; @@ -50,6 +46,8 @@ import javax.script.Invocable; import javax.script.ScriptException; 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.MILLISECONDS; import static java.util.concurrent.TimeUnit.SECONDS; @@ -75,9 +73,9 @@ public class EventManager { private Integer readyId = 0, onLoadInstances = 0; private final Properties props = new Properties(); private final String name; - private MonitoredReentrantLock lobbyLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_LOBBY); - private MonitoredReentrantLock queueLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_QUEUE); - private MonitoredReentrantLock startLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_START); + private final Lock lobbyLock = new ReentrantLock(); + private final Lock queueLock = new ReentrantLock(); + private final Lock startLock = new ReentrantLock(); private final Set playerPermit = new HashSet<>(); private final Semaphore startSemaphore = new Semaphore(7); @@ -139,18 +137,6 @@ public class EventManager { wserv = null; server = null; iv = null; - - disposeLocks(); - } - - private void disposeLocks() { - LockCollector.getInstance().registerDisposeAction(() -> emptyLocks()); - } - - private void emptyLocks() { - lobbyLock = lobbyLock.dispose(); - queueLock = queueLock.dispose(); - startLock = startLock.dispose(); } private List convertToIntegerList(List objects) { diff --git a/src/main/java/server/CashShop.java b/src/main/java/server/CashShop.java index aa7a76fc3e..cb5e4f9db8 100644 --- a/src/main/java/server/CashShop.java +++ b/src/main/java/server/CashShop.java @@ -26,8 +26,6 @@ import config.YamlConfig; import constants.id.ItemId; import constants.inventory.ItemConstants; import net.server.Server; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import provider.Data; import provider.DataProvider; import provider.DataProviderFactory; @@ -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; import static java.util.concurrent.TimeUnit.DAYS; import static java.util.concurrent.TimeUnit.HOURS; @@ -261,7 +260,7 @@ public class CashShop { private final List inventory = new ArrayList<>(); private final List wishList = new ArrayList<>(); private int notes = 0; - private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CASHSHOP); + private final Lock lock = new ReentrantLock(); public CashShop(int accountId, int characterId, int jobType) throws SQLException { this.accountId = accountId; diff --git a/src/main/java/server/life/Monster.java b/src/main/java/server/life/Monster.java index 14c061b941..a11ad18ebe 100644 --- a/src/main/java/server/life/Monster.java +++ b/src/main/java/server/life/Monster.java @@ -66,6 +66,8 @@ import java.util.Map.Entry; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; public class Monster extends AbstractLoadedLife { private static final Logger log = LoggerFactory.getLogger(Monster.class); @@ -98,11 +100,11 @@ public class Monster extends AbstractLoadedLife { private Runnable removeAfterAction = null; private boolean availablePuppetUpdate = true; - private MonitoredReentrantLock externalLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_EXT); + private final Lock externalLock = new ReentrantLock(); private MonitoredReentrantLock monsterLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB, true); - private MonitoredReentrantLock statiLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_STATI); - private MonitoredReentrantLock animationLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_ANI); - private final MonitoredReentrantLock aggroUpdateLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_AGGRO); + private final Lock statiLock = new ReentrantLock(); + private final Lock animationLock = new ReentrantLock(); + private final Lock aggroUpdateLock = new ReentrantLock(); public Monster(int id, MonsterStats stats) { super(id); @@ -2203,9 +2205,6 @@ public class Monster extends AbstractLoadedLife { } private void emptyLocks() { - externalLock = externalLock.dispose(); monsterLock = monsterLock.dispose(); - statiLock = statiLock.dispose(); - animationLock = animationLock.dispose(); } } \ No newline at end of file diff --git a/src/main/java/server/maps/MapItem.java b/src/main/java/server/maps/MapItem.java index cd0384cc4b..9f1086d842 100644 --- a/src/main/java/server/maps/MapItem.java +++ b/src/main/java/server/maps/MapItem.java @@ -23,12 +23,11 @@ package server.maps; import client.Character; import client.Client; import client.inventory.Item; -import net.server.audit.locks.MonitoredLockType; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; import tools.PacketCreator; import java.awt.*; import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import static java.util.concurrent.TimeUnit.SECONDS; @@ -40,7 +39,7 @@ public class MapItem extends AbstractMapObject { protected byte type; protected boolean pickedUp = false, playerDrop, partyDrop; protected long dropTime; - private final Lock itemLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_ITEM); + private final Lock itemLock = new ReentrantLock(); public MapItem(Item item, Point position, MapObject dropper, Character owner, Client ownerClient, byte type, boolean playerDrop) { setPosition(position);