Skip to content

Commit 25e3044

Browse files
Switch database to MariaDB 10.6 (#503)
* Switch database to MariaDB 10.6 * use MariaDBContainer for league and add mariadb connector * Rename to leagueServiceDBContainer * Clean up initialization * Purge MySQL from connection strings and dependencies Co-authored-by: Sheikah45 <Sheikah450@gmail.com>
1 parent 3fc1e24 commit 25e3044

8 files changed

Lines changed: 29 additions & 30 deletions

File tree

‎.github/workflows/build.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
container: adoptopenjdk:16-jdk-hotspot
1010
services:
1111
faf-db:
12-
image: mysql:5.7
12+
image: mariadb:10.6
1313
ports:
1414
- 3306:3306
1515
options: >-
@@ -23,7 +23,7 @@ jobs:
2323
MYSQL_USER: faf-java-api
2424
MYSQL_PASSWORD: banana
2525
faf-league-db:
26-
image: mysql:5.7
26+
image: mariadb:10.6
2727
options: >-
2828
--health-cmd "mysqladmin ping --silent"
2929
--health-interval 10s

‎build.gradle‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ dependencies {
246246
implementation("org.jsoup:jsoup:${jsoupVersion}")
247247

248248
implementation("com.github.jasminb:jsonapi-converter:${jsonapiConverterVersion}")
249-
runtimeOnly("mysql:mysql-connector-java:${mysqlConnectorVersion}")
249+
runtimeOnly("org.mariadb.jdbc:mariadb-java-client:${mariaDBConnectorVersion}")
250250

251251
testImplementation("org.springframework.boot:spring-boot-starter-test")
252252
testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc")
@@ -255,7 +255,7 @@ dependencies {
255255
testImplementation("com.jayway.jsonpath:json-path:${jsonPath}")
256256
testImplementation("com.jayway.jsonpath:json-path-assert:${jsonPathAssert}")
257257
testImplementation("org.testcontainers:junit-jupiter:${testContainersVersion}")
258-
testImplementation("org.testcontainers:mysql:1.15.0")
258+
testImplementation("org.testcontainers:mariadb:1.16.0")
259259

260260
codacy("com.github.codacy:codacy-coverage-reporter:${codacyCoverageReporterVersion}")
261261
}

‎gradle.properties‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ springDependencyManagementVersion=1.0.11.RELEASE
44
springBootVersion=2.5.4
55
javaxInjectVersion=1
66
elideVersion=5.0.11
7-
mysqlConnectorVersion=8.0.25
7+
mariaDBConnectorVersion=2.1.2
88
springfoxSwaggerVersion=3.0.0
99
coverallsGradlePluginVersion=2.12.0
1010
springSecurityOauth2AutoConfigureVersion=2.5.0

‎src/inttest/java/com/faforever/api/league/LeagueAbstractIntegrationTest.java‎

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,41 @@
66
import org.springframework.test.context.DynamicPropertyRegistry;
77
import org.springframework.test.context.DynamicPropertySource;
88
import org.testcontainers.containers.GenericContainer;
9-
import org.testcontainers.containers.MySQLContainer;
9+
import org.testcontainers.containers.MariaDBContainer;
1010
import org.testcontainers.containers.output.Slf4jLogConsumer;
1111
import org.testcontainers.junit.jupiter.Testcontainers;
1212

1313
@Testcontainers
1414
public abstract class LeagueAbstractIntegrationTest extends AbstractIntegrationTest {
15-
private static final MySQLContainer mySQLContainer;
15+
private static final MariaDBContainer<?> leagueServiceDBContainer = new MariaDBContainer<>("mariadb:10.6");
1616
protected static GenericContainer<?> leagueServiceContainer = new GenericContainer<>("faforever/faf-league-service:0.1.2");
1717

1818
static {
19-
mySQLContainer = (MySQLContainer) (new MySQLContainer("mysql:5.7")
19+
leagueServiceDBContainer
2020
.withUsername("faf-league-service")
2121
.withPassword("banana")
2222
.withDatabaseName("faf-league")
23-
.withReuse(true));
24-
mySQLContainer.start();
23+
.withReuse(true)
24+
.start();
25+
26+
final Logger logger = LoggerFactory.getLogger(LeagueAbstractIntegrationTest.class);
27+
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger);
2528

2629
leagueServiceContainer
27-
.withEnv("DB_SERVER", mySQLContainer.getContainerIpAddress() + ":" + mySQLContainer.getFirstMappedPort().toString())
30+
.withEnv("DB_SERVER", leagueServiceDBContainer.getContainerIpAddress() + ":" + leagueServiceDBContainer.getFirstMappedPort().toString())
2831
.withEnv("DB_LOGIN", "faf-league-service")
2932
.withEnv("DB_PASSWORD", "banana")
3033
.withEnv("DB_NAME", "faf-league")
3134
.withEnv("AUTO_APPLY_MIGRATIONS", "1")
32-
.withCommand();
33-
final Logger logger = LoggerFactory.getLogger(LeagueAbstractIntegrationTest.class);
34-
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger);
35-
leagueServiceContainer.withLogConsumer(logConsumer);
36-
leagueServiceContainer.start();
35+
.withCommand()
36+
.withLogConsumer(logConsumer)
37+
.start();
3738
}
3839

3940
@DynamicPropertySource
4041
public static void setDatasourceProperties(final DynamicPropertyRegistry registry) {
41-
registry.add("spring.league-datasource.url", mySQLContainer::getJdbcUrl);
42-
registry.add("spring.league-datasource.password", mySQLContainer::getPassword);
43-
registry.add("spring.league-datasource.username", mySQLContainer::getUsername);
42+
registry.add("spring.league-datasource.url", leagueServiceDBContainer::getJdbcUrl);
43+
registry.add("spring.league-datasource.password", leagueServiceDBContainer::getPassword);
44+
registry.add("spring.league-datasource.username", leagueServiceDBContainer::getUsername);
4445
}
4546
}

‎src/inttest/resources/config/application.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ spring:
22
profiles:
33
include: int
44
datasource:
5-
url: jdbc:mysql://${DATABASE_ADDRESS:localhost}/${DATABASE_NAME:faf}?useSSL=false
5+
url: jdbc:mariadb://${DATABASE_ADDRESS:localhost}/${DATABASE_NAME:faf}?useSSL=false
66
name: ${DATABASE_NAME:faf}
77
username: ${DATABASE_USERNAME:root}
88
password: ${DATABASE_PASSWORD:banana}
99
league-datasource:
10-
url: jdbc:mysql://${LEAGUE_DATABASE_ADDRESS:127.0.0.1}/${LEAGUE_DATABASE_NAME:faf-league}?useSSL=false
10+
url: jdbc:mariadb://${LEAGUE_DATABASE_ADDRESS:127.0.0.1}/${LEAGUE_DATABASE_NAME:faf-league}?useSSL=false
1111
name: faf-league
1212
username: ${LEAGUE_DATABASE_USERNAME:faf-league-service}
1313
password: ${LEAGUE_DATABASE_PASSWORD:banana}

‎src/main/resources/config/application-dev.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ faf-api:
22
jwt:
33
secretKeyPath: ${JWT_PRIVATE_KEY_PATH:test-pki-private.key}
44
publicKeyPath: ${JWT_PUBLIC_KEY_PATH:test-pki-public.key}
5-
fafHydraJwksUrl: ${JWT_FAF_HYDRA_JWKS_URL:http://localhost:4444/.well-known/jwks.json}
6-
fafHydraIssuer: ${JWT_FAF_HYDRA_ISSUER:http://localhost:4444/}
5+
fafHydraJwksUrl: ${JWT_FAF_HYDRA_JWKS_URL:https://hydra.test.faforever.com/.well-known/jwks.json}
6+
fafHydraIssuer: ${JWT_FAF_HYDRA_ISSUER:https://hydra.test.faforever.com/}
77
map:
88
target-directory: ${MAP_UPLOAD_PATH:build/cache/map/maps}
99
directory-preview-path-small: ${MAP_PREVIEW_PATH_SMALL:build/cache/map_previews/small}
@@ -58,12 +58,12 @@ faf-api:
5858

5959
spring:
6060
datasource:
61-
url: jdbc:mysql://${DATABASE_ADDRESS:127.0.0.1}/${DATABASE_NAME:faf}?useSSL=false
61+
url: jdbc:mariadb://${DATABASE_ADDRESS:127.0.0.1}/${DATABASE_NAME:faf}?useSSL=false
6262
name: faf
6363
username: ${DATABASE_USERNAME:faf-java-api}
6464
password: ${DATABASE_PASSWORD:banana}
6565
league-datasource:
66-
url: jdbc:mysql://${LEAGUE_DATABASE_ADDRESS:127.0.0.1}/${LEAGUE_DATABASE_NAME:faf-league}?useSSL=false
66+
url: jdbc:mariadb://${LEAGUE_DATABASE_ADDRESS:127.0.0.1}/${LEAGUE_DATABASE_NAME:faf-league}?useSSL=false
6767
name: faf-league
6868
username: ${LEAGUE_DATABASE_USERNAME:faf-league-service}
6969
password: ${LEAGUE_DATABASE_PASSWORD:banana}

‎src/main/resources/config/application-prod.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ faf-api:
6060

6161
spring:
6262
datasource:
63-
url: jdbc:mysql://${DATABASE_ADDRESS}/${DATABASE_NAME}?useSSL=false
63+
url: jdbc:mariadb://${DATABASE_ADDRESS}/${DATABASE_NAME}?useSSL=false
6464
name: faf
6565
username: ${DATABASE_USERNAME}
6666
password: ${DATABASE_PASSWORD}
6767
league-datasource:
68-
url: jdbc:mysql://${LEAGUE_DATABASE_ADDRESS}/${LEAGUE_DATABASE_NAME}?useSSL=false
68+
url: jdbc:mariadb://${LEAGUE_DATABASE_ADDRESS}/${LEAGUE_DATABASE_NAME}?useSSL=false
6969
name: faf-league
7070
username: ${LEAGUE_DATABASE_USERNAME}
7171
password: ${LEAGUE_DATABASE_PASSWORD}

‎src/main/resources/config/application.yml‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,11 @@ spring:
3636
application:
3737
name: FAF Java API
3838
datasource:
39-
type: com.zaxxer.hikari.HikariDataSource
4039
configuration:
4140
connection-test-query: SELECT 1 FROM DUAL
4241
minimum-idle: 2
4342
maximum-pool-size: 12
4443
league-datasource:
45-
type: com.zaxxer.hikari.HikariDataSource
4644
configuration:
4745
connection-test-query: SELECT 1 FROM DUAL
4846
minimum-idle: 2
@@ -54,7 +52,7 @@ spring:
5452
properties:
5553
hibernate:
5654
current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
57-
dialect: org.hibernate.dialect.MySQL5Dialect
55+
dialect: org.hibernate.dialect.MariaDB103Dialect
5856
jackson:
5957
serialization:
6058
WRITE_DATES_AS_TIMESTAMPS: false

0 commit comments

Comments
 (0)