Merge branch 'RED-7775' into 'main'

RED-7775: Set database connection names for pg_stat_activity

See merge request fforesight/database-tenant-commons!12
This commit is contained in:
Dominique Eifländer 2023-10-18 13:30:11 +02:00
commit da659c3df1
3 changed files with 12 additions and 4 deletions

View File

@ -43,6 +43,9 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
@Value("${multitenancy.datasource-cache.expireAfterAccess:10}")
private Integer expireAfterAccess;
@Value("${spring.application.name:}")
private String applicationName;
private LoadingCache<String, SchemaConnection> connectionPerTenant;
private LoadingCache<SchemaConnection, DataSource> dataSourcePerConnectionString;
@ -55,7 +58,7 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
public SchemaConnection load(String key) {
var tenant = tenantProvider.getTenant(key);
var jdbcUrl = JDBCUtils.buildJdbcUrl(tenant.getDatabaseConnection());
var jdbcUrl = JDBCUtils.buildJdbcUrl(tenant.getDatabaseConnection(), applicationName + "-multitenant");
return SchemaConnection.builder().jdbcUrl(jdbcUrl).databaseConnection(tenant.getDatabaseConnection()).build();
}
});
@ -86,7 +89,7 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
tenantHikariSettings.setUsername(connection.getDatabaseConnection().getUsername());
tenantHikariSettings.setPassword(decryptedPassword);
var jdbcUrl = JDBCUtils.buildJdbcUrl(connection.getDatabaseConnection());
var jdbcUrl = JDBCUtils.buildJdbcUrl(connection.getDatabaseConnection(), applicationName + "-multitenant");
tenantHikariSettings.setJdbcUrl(jdbcUrl);
tenantHikariSettings.setPoolName(jdbcUrl + TENANT_POOL_NAME_SUFFIX);

View File

@ -12,6 +12,7 @@ import org.postgresql.util.PSQLException;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
import org.springframework.core.io.ResourceLoader;
import org.springframework.jdbc.core.JdbcTemplate;
@ -51,6 +52,9 @@ public class TenantLiquibaseInitializer {
private final TenantProvider tenantProvider;
private final EncryptionDecryptionService encryptionDecryptionService;
@Value("${spring.application.name:}")
private String applicationName;
public TenantLiquibaseInitializer(@Qualifier("tenantLiquibaseProperties") LiquibaseProperties liquibaseProperties,
ResourceLoader resourceLoader,
@ -95,7 +99,7 @@ public class TenantLiquibaseInitializer {
private void createSchema(TenantResponse tenantRequest) {
var jdbcUrl = JDBCUtils.buildJdbcUrl(tenantRequest.getDatabaseConnection());
var jdbcUrl = JDBCUtils.buildJdbcUrl(tenantRequest.getDatabaseConnection(), applicationName + "-liquibase");
try (Connection connection = DriverManager.getConnection(jdbcUrl,
tenantRequest.getDatabaseConnection().getUsername(),
encryptionDecryptionService.decrypt(tenantRequest.getDatabaseConnection().getPassword()))) {

View File

@ -18,13 +18,14 @@ public class JDBCUtils {
}
public String buildJdbcUrl(DatabaseConnection databaseConnection) {
public String buildJdbcUrl(DatabaseConnection databaseConnection, String datasourceName) {
StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnection.getDriver(),
databaseConnection.getHost(),
databaseConnection.getPort(),
databaseConnection.getDatabase());
Map<String, String> params = getConnectionParameters(databaseConnection);
params.put("ApplicationName", datasourceName);
appendParams(sb, params);
return sb.toString();
}