Redo hwid bans - reduce amount of db queries on login

Works by loading all hwid bans on startup and querying the collection in memory
rather than making calls on every login.
This commit is contained in:
P0nk
2024-10-01 07:04:25 +02:00
parent 7661cd0f75
commit af02f8b744
20 changed files with 235 additions and 55 deletions

View File

@@ -45,6 +45,7 @@ import constants.net.ServerConstants;
import database.PgDatabaseConfig;
import database.PgDatabaseConnection;
import database.account.AccountRepository;
import database.ban.HwidBanRepository;
import database.ban.IpBanRepository;
import database.character.CharacterLoader;
import database.character.CharacterRepository;
@@ -86,6 +87,7 @@ import server.CashShop.CashItemFactory;
import server.SkillbookInformationProvider;
import server.ThreadManager;
import server.TimerManager;
import server.ban.HwidBanManager;
import server.ban.IpBanManager;
import server.expeditions.ExpeditionBossLog;
import server.life.PlayerNPC;
@@ -719,6 +721,7 @@ public class Server {
futures.add(initExecutor.submit(Quest::loadAllQuests));
futures.add(initExecutor.submit(SkillbookInformationProvider::loadAllSkillbookInformation));
futures.add(initExecutor.submit(channelDependencies.ipBanManager()::loadIpBans));
futures.add(initExecutor.submit(channelDependencies.hwidBanManager()::loadHwidBans));
initExecutor.shutdown();
TimeZone.setDefault(TimeZone.getTimeZone(YamlConfig.config.server.TIMEZONE));
@@ -833,7 +836,8 @@ public class Server {
DropProvider dropProvider = new DropProvider(new DropRepository(connection));
ShopFactory shopFactory = new ShopFactory(new ShopDao(connection));
IpBanManager ipBanManager = new IpBanManager(new IpBanRepository(connection));
BanService banService = new BanService(accountService, transitionService, ipBanManager);
HwidBanManager hwidBanManager = new HwidBanManager(new HwidBanRepository(connection));
BanService banService = new BanService(accountService, transitionService, ipBanManager, hwidBanManager);
ChannelDependencies channelDependencies = ChannelDependencies.builder()
.accountService(accountService)
.characterCreator(new CharacterCreator(connection, characterRepository))
@@ -848,6 +852,7 @@ public class Server {
.shopFactory(shopFactory)
.transitionService(transitionService)
.ipBanManager(ipBanManager)
.hwidBanManager(hwidBanManager)
.banService(banService)
.build();