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

32
pom.xml
View File

@ -14,16 +14,16 @@
</organization> </organization>
<scm> <scm>
<url>git@gitea.locusworks.net:Locusworks/eight-track.git</url> <url>ssh://gitea@gitea.locusworks.net:7999/locusworks/eight-track.git</url>
</scm> </scm>
<properties> <properties>
<flyway.version>6.1.3</flyway.version> <flyway.version>6.4.2</flyway.version>
<mariadb.version>2.5.2</mariadb.version> <mysql.version>8.0.20</mysql.version>
<hibernate.version>5.4.10.Final</hibernate.version> <hibernate.version>5.4.16.Final</hibernate.version>
<spring.version>5.2.2.RELEASE</spring.version> <spring.version>5.2.6.RELEASE</spring.version>
<spring.boot.version>2.2.2.RELEASE</spring.boot.version> <spring.boot.version>2.3.0.RELEASE</spring.boot.version>
<spring.data.version>2.2.2.RELEASE</spring.data.version> <spring.data.version>2.3.0.RELEASE</spring.data.version>
<jackson.version>2.10.1</jackson.version> <jackson.version>2.10.1</jackson.version>
<log4j.version>2.12.1</log4j.version> <log4j.version>2.12.1</log4j.version>
<slf4j.version>1.7.28</slf4j.version> <slf4j.version>1.7.28</slf4j.version>
@ -116,7 +116,7 @@
<artifactId>flyway-maven-plugin</artifactId> <artifactId>flyway-maven-plugin</artifactId>
<version>${flyway.version}</version> <version>${flyway.version}</version>
<configuration> <configuration>
<url>jdbc:mariadb://localhost:3306/</url> <url>jdbc:mysql://localhost:3306/</url>
<outOfOrder>false</outOfOrder> <outOfOrder>false</outOfOrder>
<schemas> <schemas>
<schema>eighttrack</schema> <schema>eighttrack</schema>
@ -128,9 +128,9 @@
</configuration> </configuration>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.mariadb.jdbc</groupId> <groupId>mysql</groupId>
<artifactId>mariadb-java-client</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>${mariadb.version}</version> <version>${mysql.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
</plugin> </plugin>
@ -184,17 +184,11 @@
<version>${flyway.version}</version> <version>${flyway.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>${mariadb.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version> <version>${mysql.version}</version>
</dependency> </dependency>
<dependency> <dependency>
@ -206,7 +200,7 @@
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId> <artifactId>hibernate-hikaricp</artifactId>
<version>${hibernate.version}</version> <version>${hibernate.version}</version>
</dependency> </dependency>

View File

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

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.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong; import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler; import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler;
import net.locusworks.discord.eighttrack.handlers.GuildMusicHandler;
import net.locusworks.discord.eighttrack.services.RepositoryService; import net.locusworks.discord.eighttrack.services.RepositoryService;
@Component @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.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong; import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler; 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.handlers.ReactionHandler;
import net.locusworks.discord.eighttrack.listeners.ReactionListener; import net.locusworks.discord.eighttrack.listeners.ReactionListener;
import net.locusworks.discord.eighttrack.services.RepositoryService; 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.GuildPlaylistSong;
import net.locusworks.discord.eighttrack.database.entities.GuildSong; import net.locusworks.discord.eighttrack.database.entities.GuildSong;
import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler; import net.locusworks.discord.eighttrack.events.playlist.AbstractPlaylistEventHandler;
import net.locusworks.discord.eighttrack.handlers.GuildMusicHandler;
import net.locusworks.discord.eighttrack.services.RepositoryService; import net.locusworks.discord.eighttrack.services.RepositoryService;
@Component @Component

View File

@ -67,7 +67,7 @@ public class AESService {
AESService service = new AESService(); AESService service = new AESService();
service.init(); 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() { private void init() {
logger = ApplicationLoggerFactory.getLogger(GuildMusicService.class); logger = ApplicationLoggerFactory.getLogger(GuildMusicService.class);
for (DiscordGuild dg : guildRepoService.getGuildRepo().findAll()) { for (DiscordGuild dg : guildRepoService.getGuildRepo().findAll()) {
GuildMusicHandler gmh = new GuildMusicHandler(dg.getGuildId(), guildRepoService); GuildMusicHandler gmh = createMusicHandler(dg.getGuildId());
gmh.accept((id) -> handlerMap.remove(id));
handlerMap.put(dg.getGuildId(), gmh); handlerMap.put(dg.getGuildId(), gmh);
} }
} }
@ -112,11 +111,20 @@ public class GuildMusicService {
public GuildMusicHandler getMusicHandler(Long guildId) { public GuildMusicHandler getMusicHandler(Long guildId) {
if (!handlerMap.containsKey(guildId)) { if (!handlerMap.containsKey(guildId)) {
GuildMusicHandler gmh = new GuildMusicHandler(guildId, guildRepoService); GuildMusicHandler gmh = createMusicHandler(guildId);
gmh.accept((id) -> handlerMap.remove(id));
handlerMap.put(guildId, gmh); handlerMap.put(guildId, gmh);
} }
return handlerMap.get(guildId); 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.GuildPlaylistSong</class>
<class>net.locusworks.discord.eighttrack.database.entities.Log</class> <class>net.locusworks.discord.eighttrack.database.entities.Log</class>
<properties> <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> </properties>
</persistence-unit> </persistence-unit>
</persistence> </persistence>

View File

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