Remove monitored locks with default fairness, use basic version
This commit is contained in:
@@ -94,6 +94,7 @@ import java.util.concurrent.ScheduledFuture;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
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 chrLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_CHR, true);
|
||||||
private final Lock evtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EVT, true);
|
private final Lock evtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EVT, true);
|
||||||
private final Lock petLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PET, true);
|
private final Lock petLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PET, true);
|
||||||
private final Lock prtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PRT);
|
private final Lock prtLock = new ReentrantLock();
|
||||||
private final Lock cpnLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_CPN);
|
private final Lock cpnLock = new ReentrantLock();
|
||||||
private final Map<Integer, Set<Integer>> excluded = new LinkedHashMap<>();
|
private final Map<Integer, Set<Integer>> excluded = new LinkedHashMap<>();
|
||||||
private final Set<Integer> excludedItems = new LinkedHashSet<>();
|
private final Set<Integer> excludedItems = new LinkedHashSet<>();
|
||||||
private final Set<Integer> disabledPartySearchInvites = new LinkedHashSet<>();
|
private final Set<Integer> disabledPartySearchInvites = new LinkedHashSet<>();
|
||||||
|
|||||||
@@ -21,8 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
package client;
|
package client;
|
||||||
|
|
||||||
import net.server.audit.locks.MonitoredLockType;
|
|
||||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
|
||||||
import tools.DatabaseConnection;
|
import tools.DatabaseConnection;
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
|
|
||||||
@@ -33,13 +31,14 @@ import java.sql.SQLException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
public final class MonsterBook {
|
public final class MonsterBook {
|
||||||
private int specialCard = 0;
|
private int specialCard = 0;
|
||||||
private int normalCard = 0;
|
private int normalCard = 0;
|
||||||
private int bookLevel = 1;
|
private int bookLevel = 1;
|
||||||
private final Map<Integer, Integer> cards = new LinkedHashMap<>();
|
private final Map<Integer, Integer> cards = new LinkedHashMap<>();
|
||||||
private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.BOOK);
|
private final Lock lock = new ReentrantLock();
|
||||||
|
|
||||||
public Set<Entry<Integer, Integer>> getCardSet() {
|
public Set<Entry<Integer, Integer>> getCardSet() {
|
||||||
lock.lock();
|
lock.lock();
|
||||||
|
|||||||
@@ -26,10 +26,6 @@ import net.server.audit.locks.active.TrackerReentrantLock;
|
|||||||
* @author RonanLana
|
* @author RonanLana
|
||||||
*/
|
*/
|
||||||
public class MonitoredReentrantLockFactory {
|
public class MonitoredReentrantLockFactory {
|
||||||
public static TrackerReentrantLock createLock(MonitoredLockType id) {
|
|
||||||
return new TrackerReentrantLock(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TrackerReentrantLock createLock(MonitoredLockType id, boolean fair) {
|
public static TrackerReentrantLock createLock(MonitoredLockType id, boolean fair) {
|
||||||
return new TrackerReentrantLock(id, fair);
|
return new TrackerReentrantLock(id, fair);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package net.server.coordinator.session;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -10,6 +8,7 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages session initialization using remote host (ip address).
|
* Manages session initialization using remote host (ip address).
|
||||||
@@ -24,7 +23,7 @@ public class SessionInitialization {
|
|||||||
|
|
||||||
SessionInitialization() {
|
SessionInitialization() {
|
||||||
for (int i = 0; i < 100; i++) {
|
for (int i = 0; i < 100; i++) {
|
||||||
locks.add(MonitoredReentrantLockFactory.createLock(MonitoredLockType.SERVER_LOGIN_COORD));
|
locks.add(new ReentrantLock());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ package net.server.coordinator.world;
|
|||||||
import client.Character;
|
import client.Character;
|
||||||
import config.YamlConfig;
|
import config.YamlConfig;
|
||||||
import net.server.Server;
|
import net.server.Server;
|
||||||
import net.server.audit.LockCollector;
|
|
||||||
import net.server.audit.locks.MonitoredLockType;
|
import net.server.audit.locks.MonitoredLockType;
|
||||||
import net.server.audit.locks.MonitoredReentrantLock;
|
import net.server.audit.locks.MonitoredReentrantLock;
|
||||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||||
@@ -34,13 +33,14 @@ import tools.Pair;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ronan
|
* @author Ronan
|
||||||
*/
|
*/
|
||||||
public class MonsterAggroCoordinator {
|
public class MonsterAggroCoordinator {
|
||||||
|
private final Lock lock = new ReentrantLock();
|
||||||
private MonitoredReentrantLock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO);
|
|
||||||
private final MonitoredReentrantLock idleLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO_IDLE, true);
|
private final MonitoredReentrantLock idleLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_AGGRO_IDLE, true);
|
||||||
private long lastStopTime = Server.getInstance().getCurrentTime();
|
private long lastStopTime = Server.getInstance().getCurrentTime();
|
||||||
|
|
||||||
@@ -375,15 +375,5 @@ public class MonsterAggroCoordinator {
|
|||||||
} finally {
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
disposeLocks();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disposeLocks() {
|
|
||||||
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void emptyLocks() {
|
|
||||||
lock = lock.dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,10 +25,6 @@ import client.Character;
|
|||||||
import config.YamlConfig;
|
import config.YamlConfig;
|
||||||
import constants.game.GameConstants;
|
import constants.game.GameConstants;
|
||||||
import net.server.Server;
|
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.channel.Channel;
|
||||||
import net.server.guild.Guild;
|
import net.server.guild.Guild;
|
||||||
import net.server.world.Party;
|
import net.server.world.Party;
|
||||||
@@ -50,6 +46,8 @@ import javax.script.Invocable;
|
|||||||
import javax.script.ScriptException;
|
import javax.script.ScriptException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.Semaphore;
|
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.MILLISECONDS;
|
||||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
@@ -75,9 +73,9 @@ public class EventManager {
|
|||||||
private Integer readyId = 0, onLoadInstances = 0;
|
private Integer readyId = 0, onLoadInstances = 0;
|
||||||
private final Properties props = new Properties();
|
private final Properties props = new Properties();
|
||||||
private final String name;
|
private final String name;
|
||||||
private MonitoredReentrantLock lobbyLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_LOBBY);
|
private final Lock lobbyLock = new ReentrantLock();
|
||||||
private MonitoredReentrantLock queueLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_QUEUE);
|
private final Lock queueLock = new ReentrantLock();
|
||||||
private MonitoredReentrantLock startLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_START);
|
private final Lock startLock = new ReentrantLock();
|
||||||
|
|
||||||
private final Set<Integer> playerPermit = new HashSet<>();
|
private final Set<Integer> playerPermit = new HashSet<>();
|
||||||
private final Semaphore startSemaphore = new Semaphore(7);
|
private final Semaphore startSemaphore = new Semaphore(7);
|
||||||
@@ -139,18 +137,6 @@ public class EventManager {
|
|||||||
wserv = null;
|
wserv = null;
|
||||||
server = null;
|
server = null;
|
||||||
iv = 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<Integer> convertToIntegerList(List<Object> objects) {
|
private List<Integer> convertToIntegerList(List<Object> objects) {
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ import config.YamlConfig;
|
|||||||
import constants.id.ItemId;
|
import constants.id.ItemId;
|
||||||
import constants.inventory.ItemConstants;
|
import constants.inventory.ItemConstants;
|
||||||
import net.server.Server;
|
import net.server.Server;
|
||||||
import net.server.audit.locks.MonitoredLockType;
|
|
||||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
|
||||||
import provider.Data;
|
import provider.Data;
|
||||||
import provider.DataProvider;
|
import provider.DataProvider;
|
||||||
import provider.DataProviderFactory;
|
import provider.DataProviderFactory;
|
||||||
@@ -42,6 +40,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.locks.Lock;
|
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.DAYS;
|
||||||
import static java.util.concurrent.TimeUnit.HOURS;
|
import static java.util.concurrent.TimeUnit.HOURS;
|
||||||
@@ -261,7 +260,7 @@ public class CashShop {
|
|||||||
private final List<Item> inventory = new ArrayList<>();
|
private final List<Item> inventory = new ArrayList<>();
|
||||||
private final List<Integer> wishList = new ArrayList<>();
|
private final List<Integer> wishList = new ArrayList<>();
|
||||||
private int notes = 0;
|
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 {
|
public CashShop(int accountId, int characterId, int jobType) throws SQLException {
|
||||||
this.accountId = accountId;
|
this.accountId = accountId;
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ import java.util.Map.Entry;
|
|||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
public class Monster extends AbstractLoadedLife {
|
public class Monster extends AbstractLoadedLife {
|
||||||
private static final Logger log = LoggerFactory.getLogger(Monster.class);
|
private static final Logger log = LoggerFactory.getLogger(Monster.class);
|
||||||
@@ -98,11 +100,11 @@ public class Monster extends AbstractLoadedLife {
|
|||||||
private Runnable removeAfterAction = null;
|
private Runnable removeAfterAction = null;
|
||||||
private boolean availablePuppetUpdate = true;
|
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 monsterLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB, true);
|
||||||
private MonitoredReentrantLock statiLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_STATI);
|
private final Lock statiLock = new ReentrantLock();
|
||||||
private MonitoredReentrantLock animationLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_ANI);
|
private final Lock animationLock = new ReentrantLock();
|
||||||
private final MonitoredReentrantLock aggroUpdateLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MOB_AGGRO);
|
private final Lock aggroUpdateLock = new ReentrantLock();
|
||||||
|
|
||||||
public Monster(int id, MonsterStats stats) {
|
public Monster(int id, MonsterStats stats) {
|
||||||
super(id);
|
super(id);
|
||||||
@@ -2203,9 +2205,6 @@ public class Monster extends AbstractLoadedLife {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void emptyLocks() {
|
private void emptyLocks() {
|
||||||
externalLock = externalLock.dispose();
|
|
||||||
monsterLock = monsterLock.dispose();
|
monsterLock = monsterLock.dispose();
|
||||||
statiLock = statiLock.dispose();
|
|
||||||
animationLock = animationLock.dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,12 +23,11 @@ package server.maps;
|
|||||||
import client.Character;
|
import client.Character;
|
||||||
import client.Client;
|
import client.Client;
|
||||||
import client.inventory.Item;
|
import client.inventory.Item;
|
||||||
import net.server.audit.locks.MonitoredLockType;
|
|
||||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
|
|
||||||
@@ -40,7 +39,7 @@ public class MapItem extends AbstractMapObject {
|
|||||||
protected byte type;
|
protected byte type;
|
||||||
protected boolean pickedUp = false, playerDrop, partyDrop;
|
protected boolean pickedUp = false, playerDrop, partyDrop;
|
||||||
protected long dropTime;
|
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) {
|
public MapItem(Item item, Point position, MapObject dropper, Character owner, Client ownerClient, byte type, boolean playerDrop) {
|
||||||
setPosition(position);
|
setPosition(position);
|
||||||
|
|||||||
Reference in New Issue
Block a user