Skip to content

Commit 1fe21da

Browse files
committed
Added settings.database.ssl-mode setting, since vert.x 5 contains bug where ssl-mode preferred (default since 5.1.0) just hangs mysql connections and never releases them.
1 parent c1a5e76 commit 1fe21da

6 files changed

Lines changed: 26 additions & 0 deletions

File tree

docs/config-app.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ For filesystem data source available next options:
323323

324324
For database data source available next options:
325325
- `settings.database.type` - type of database to be used: `mysql` or `postgres`.
326+
- `settings.database.ssl-mode` - type of ssl mode to be used: `disabled`, `preferred` or `required`
326327
- `settings.database.host` - database destination host.
327328
- `settings.database.port` - database destination port.
328329
- `settings.database.dbname` - database name.

src/main/java/org/prebid/server/spring/config/database/DatabaseConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ ConnectionPoolSettings connectionPoolSettings(DatabaseConfigurationProperties da
5151
databaseConfigurationProperties.getMaxPreparedStatementCacheSize(),
5252
databaseConfigurationProperties.getUser(),
5353
databaseConfigurationProperties.getPassword(),
54+
databaseConfigurationProperties.getSslMode(),
5455
databaseConfigurationProperties.getType());
5556
}
5657

@@ -85,6 +86,7 @@ Pool mysqlConnectionPool(Vertx vertx,
8586
.setDatabase(databaseAddress.getDatabaseName())
8687
.setUser(connectionPoolSettings.getUser())
8788
.setPassword(connectionPoolSettings.getPassword())
89+
.setSslMode(connectionPoolSettings.getSslMode().mysqlMode)
8890
.setCachePreparedStatements(connectionPoolSettings.getEnablePreparedStatementCaching())
8991
.setPreparedStatementCacheMaxSize(connectionPoolSettings.getMaxPreparedStatementCacheSize());
9092

@@ -116,6 +118,7 @@ Pool postgresConnectionPool(Vertx vertx,
116118
.setDatabase(databaseAddress.getDatabaseName())
117119
.setUser(connectionPoolSettings.getUser())
118120
.setPassword(connectionPoolSettings.getPassword())
121+
.setSslMode(connectionPoolSettings.getSslMode().pgMode)
119122
.setCachePreparedStatements(connectionPoolSettings.getEnablePreparedStatementCaching())
120123
.setPreparedStatementCacheMaxSize(connectionPoolSettings.getMaxPreparedStatementCacheSize());
121124

src/main/java/org/prebid/server/spring/config/database/model/ConnectionPoolSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ public class ConnectionPoolSettings {
1717

1818
String password;
1919

20+
SslMode sslMode;
21+
2022
DatabaseType databaseType;
2123
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.prebid.server.spring.config.database.model;
2+
3+
public enum SslMode {
4+
5+
disabled(io.vertx.pgclient.SslMode.DISABLE, io.vertx.mysqlclient.SslMode.DISABLED),
6+
preferred(io.vertx.pgclient.SslMode.PREFER, io.vertx.mysqlclient.SslMode.PREFERRED),
7+
required(io.vertx.pgclient.SslMode.REQUIRE, io.vertx.mysqlclient.SslMode.REQUIRED);
8+
9+
public final io.vertx.pgclient.SslMode pgMode;
10+
public final io.vertx.mysqlclient.SslMode mysqlMode;
11+
12+
SslMode(io.vertx.pgclient.SslMode pgMode, io.vertx.mysqlclient.SslMode mysqlMode) {
13+
this.pgMode = pgMode;
14+
this.mysqlMode = mysqlMode;
15+
}
16+
}

src/main/java/org/prebid/server/spring/config/database/properties/DatabaseConfigurationProperties.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.Data;
44
import lombok.NoArgsConstructor;
55
import org.prebid.server.spring.config.database.model.DatabaseType;
6+
import org.prebid.server.spring.config.database.model.SslMode;
67

78
import jakarta.validation.constraints.Min;
89
import jakarta.validation.constraints.NotBlank;
@@ -16,6 +17,8 @@ public class DatabaseConfigurationProperties {
1617
@NotNull
1718
private DatabaseType type;
1819
@NotNull
20+
private SslMode sslMode;
21+
@NotNull
1922
@Min(1)
2023
private Integer poolSize;
2124
@NotNull

src/main/resources/application.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ settings:
167167
fail-on-disabled-bidders: true
168168
database:
169169
pool-size: 20
170+
ssl-mode: disabled
170171
idle-connection-timeout: 300
171172
enable-prepared-statement-caching: false
172173
max-prepared-statement-cache-size: 256

0 commit comments

Comments
 (0)