Switched to using HikariCP for connection pool
All checks were successful
Locusworks Team/eight-track/pipeline/head This commit looks good

This commit is contained in:
Isaac Parenteau
2020-05-24 00:32:07 -05:00
parent 79b5c695b0
commit f4805fd8b5
9 changed files with 45 additions and 68 deletions

View File

@ -30,21 +30,19 @@ package net.locusworks.discord.eighttrack.database.config;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import java.util.stream.Collectors;
import javax.sql.DataSource;
import org.apache.commons.lang3.StringUtils;
import org.mariadb.jdbc.MariaDbDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import net.locusworks.discord.eighttrack.services.ConfigurationService;
@Primary
@ -76,35 +74,22 @@ public class EightTrackDataSource {
*/
@Bean
public DataSource dataSource() throws Exception {
return getDataSource(false);
logger.debug("Getting datasource");
return getDataSource(confService.getDatabaseUsername(),
confService.getDatabasePassword(),
"/eighttrack");
}
@Bean
public DataSource flywayDataSource() throws Exception {
logger.debug("Logging in with flyway for migrations");
String user = confService.getDatabaseRootUsername();
String passwd = confService.getDatabaseRootPassword();
String url = String.format("jdbc:mariadb://%s:%d?user=%s&password=%s",
confService.getDatabaseHost(), confService.getDatabasePort(),
user, passwd);
MariaDbDataSource mariadbDS = new MariaDbDataSource(url);
return mariadbDS;
return getDataSource(confService.getDatabaseRootUsername(),
confService.getDatabaseRootPassword(),
"");
}
private DataSource getDataSource(Boolean isFlyway) throws Exception {
logger.debug("Getting datasource");
String user = confService.getDatabaseUsername();
String passwd = confService.getDatabasePassword();
Properties props = new Properties();
props.setProperty("user", user);
props.setProperty("password", passwd);
private DataSource getDataSource(String user, String passwd, String db) throws Exception {
List<String> params = mysqlProperties
.entrySet()
.stream()
@ -114,22 +99,19 @@ public class EightTrackDataSource {
String host = confService.getDatabaseHost();
int port = confService.getDatabasePort();
String url = String.format(JNDI_STRING, host, port, "/eighttrack");
String url = String.format(JNDI_STRING, host, port, db);
url = String.format("%s?%s", url, StringUtils.join(params, "&"));
logger.debug("Database connection string: %s", url);
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(DRIVER);
cpds.setJdbcUrl(url);
cpds.setUser(user);
cpds.setPassword(passwd);
cpds.setMinPoolSize(5);
cpds.setMaxPoolSize(100);
cpds.setAcquireIncrement(10);
return cpds;
return DataSourceBuilder
.create()
.username(user)
.password(passwd)
.url(url)
.driverClassName(DRIVER)
.build();
}
}

View File

@ -44,7 +44,6 @@ import net.locusworks.discord.eighttrack.database.entities.GuildPlaylist;
import net.locusworks.discord.eighttrack.database.entities.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler;
import net.locusworks.discord.eighttrack.handlers.GuildMusicHandler;
import net.locusworks.discord.eighttrack.services.RepositoryService;
@Component

View File

@ -42,7 +42,6 @@ import net.locusworks.discord.eighttrack.database.entities.GuildPlaylist;
import net.locusworks.discord.eighttrack.database.entities.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler;
import net.locusworks.discord.eighttrack.handlers.GuildMusicHandler;
import net.locusworks.discord.eighttrack.handlers.ReactionHandler;
import net.locusworks.discord.eighttrack.listeners.ReactionListener;
import net.locusworks.discord.eighttrack.services.RepositoryService;

View File

@ -36,7 +36,6 @@ import net.locusworks.discord.eighttrack.database.entities.GuildPlaylist;
import net.locusworks.discord.eighttrack.database.entities.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler;
import net.locusworks.discord.eighttrack.handlers.GuildMusicHandler;
import net.locusworks.discord.eighttrack.services.RepositoryService;
@Component

View File

@ -67,7 +67,7 @@ public class AESService {
AESService service = new AESService();
service.init();
System.out.println(service.encrypt("zeGAPgbH9HFbqmjRjmwzUDKv"));
System.out.println(service.encrypt("yqwAK!H5KAc0d2xWdN6*S0w4"));
}

View File

@ -59,8 +59,7 @@ public class GuildMusicService {
private void init() {
logger = ApplicationLoggerFactory.getLogger(GuildMusicService.class);
for (DiscordGuild dg : guildRepoService.getGuildRepo().findAll()) {
GuildMusicHandler gmh = new GuildMusicHandler(dg.getGuildId(), guildRepoService);
gmh.accept((id) -> handlerMap.remove(id));
GuildMusicHandler gmh = createMusicHandler(dg.getGuildId());
handlerMap.put(dg.getGuildId(), gmh);
}
}
@ -112,11 +111,20 @@ public class GuildMusicService {
public GuildMusicHandler getMusicHandler(Long guildId) {
if (!handlerMap.containsKey(guildId)) {
GuildMusicHandler gmh = new GuildMusicHandler(guildId, guildRepoService);
gmh.accept((id) -> handlerMap.remove(id));
GuildMusicHandler gmh = createMusicHandler(guildId);
handlerMap.put(guildId, gmh);
}
return handlerMap.get(guildId);
}
/**
* @param guildId
* @return
*/
private GuildMusicHandler createMusicHandler(Long guildId) {
GuildMusicHandler gmh = new GuildMusicHandler(guildId, guildRepoService);
gmh.accept((id) -> handlerMap.remove(id));
return gmh;
}
}

View File

@ -9,10 +9,6 @@
<class>net.locusworks.discord.eighttrack.database.entities.GuildPlaylistSong</class>
<class>net.locusworks.discord.eighttrack.database.entities.Log</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mariadb://devops.locusworks.net:3306/eighttrack"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value="0a0wNt6aX4e66LNhA5uKLdnnN"/>
</properties>
</persistence-unit>
</persistence>

View File

@ -1,5 +1,5 @@
dbAdmin=root
dbAdminPassword=gSkjsvZbQTQtogOrPYqorCuuzp4WUpGFVtPYtMVj47U=
dbAdminPassword=bDNuBX0IqflafBFBfr10MQkdGgamC3UeZ0GcsWUWeCI=
dbUser=eighttrackAdmin
dbUserPassword=RaamWDMgA2p09R3kAiKHqauu6mmKU2HLQ4nAfEGMNOs=
dbHost=localhost