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:
commit
da659c3df1
@ -43,6 +43,9 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
|
|||||||
@Value("${multitenancy.datasource-cache.expireAfterAccess:10}")
|
@Value("${multitenancy.datasource-cache.expireAfterAccess:10}")
|
||||||
private Integer expireAfterAccess;
|
private Integer expireAfterAccess;
|
||||||
|
|
||||||
|
@Value("${spring.application.name:}")
|
||||||
|
private String applicationName;
|
||||||
|
|
||||||
private LoadingCache<String, SchemaConnection> connectionPerTenant;
|
private LoadingCache<String, SchemaConnection> connectionPerTenant;
|
||||||
|
|
||||||
private LoadingCache<SchemaConnection, DataSource> dataSourcePerConnectionString;
|
private LoadingCache<SchemaConnection, DataSource> dataSourcePerConnectionString;
|
||||||
@ -55,7 +58,7 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
|
|||||||
public SchemaConnection load(String key) {
|
public SchemaConnection load(String key) {
|
||||||
|
|
||||||
var tenant = tenantProvider.getTenant(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();
|
return SchemaConnection.builder().jdbcUrl(jdbcUrl).databaseConnection(tenant.getDatabaseConnection()).build();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -86,7 +89,7 @@ public class DynamicDataSourceBasedMultiTenantConnectionProvider extends Abstrac
|
|||||||
tenantHikariSettings.setUsername(connection.getDatabaseConnection().getUsername());
|
tenantHikariSettings.setUsername(connection.getDatabaseConnection().getUsername());
|
||||||
tenantHikariSettings.setPassword(decryptedPassword);
|
tenantHikariSettings.setPassword(decryptedPassword);
|
||||||
|
|
||||||
var jdbcUrl = JDBCUtils.buildJdbcUrl(connection.getDatabaseConnection());
|
var jdbcUrl = JDBCUtils.buildJdbcUrl(connection.getDatabaseConnection(), applicationName + "-multitenant");
|
||||||
tenantHikariSettings.setJdbcUrl(jdbcUrl);
|
tenantHikariSettings.setJdbcUrl(jdbcUrl);
|
||||||
tenantHikariSettings.setPoolName(jdbcUrl + TENANT_POOL_NAME_SUFFIX);
|
tenantHikariSettings.setPoolName(jdbcUrl + TENANT_POOL_NAME_SUFFIX);
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import org.postgresql.util.PSQLException;
|
|||||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
|
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
@ -51,6 +52,9 @@ public class TenantLiquibaseInitializer {
|
|||||||
private final TenantProvider tenantProvider;
|
private final TenantProvider tenantProvider;
|
||||||
private final EncryptionDecryptionService encryptionDecryptionService;
|
private final EncryptionDecryptionService encryptionDecryptionService;
|
||||||
|
|
||||||
|
@Value("${spring.application.name:}")
|
||||||
|
private String applicationName;
|
||||||
|
|
||||||
|
|
||||||
public TenantLiquibaseInitializer(@Qualifier("tenantLiquibaseProperties") LiquibaseProperties liquibaseProperties,
|
public TenantLiquibaseInitializer(@Qualifier("tenantLiquibaseProperties") LiquibaseProperties liquibaseProperties,
|
||||||
ResourceLoader resourceLoader,
|
ResourceLoader resourceLoader,
|
||||||
@ -95,7 +99,7 @@ public class TenantLiquibaseInitializer {
|
|||||||
|
|
||||||
private void createSchema(TenantResponse tenantRequest) {
|
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,
|
try (Connection connection = DriverManager.getConnection(jdbcUrl,
|
||||||
tenantRequest.getDatabaseConnection().getUsername(),
|
tenantRequest.getDatabaseConnection().getUsername(),
|
||||||
encryptionDecryptionService.decrypt(tenantRequest.getDatabaseConnection().getPassword()))) {
|
encryptionDecryptionService.decrypt(tenantRequest.getDatabaseConnection().getPassword()))) {
|
||||||
|
|||||||
@ -18,13 +18,14 @@ public class JDBCUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String buildJdbcUrl(DatabaseConnection databaseConnection) {
|
public String buildJdbcUrl(DatabaseConnection databaseConnection, String datasourceName) {
|
||||||
|
|
||||||
StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnection.getDriver(),
|
StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnection.getDriver(),
|
||||||
databaseConnection.getHost(),
|
databaseConnection.getHost(),
|
||||||
databaseConnection.getPort(),
|
databaseConnection.getPort(),
|
||||||
databaseConnection.getDatabase());
|
databaseConnection.getDatabase());
|
||||||
Map<String, String> params = getConnectionParameters(databaseConnection);
|
Map<String, String> params = getConnectionParameters(databaseConnection);
|
||||||
|
params.put("ApplicationName", datasourceName);
|
||||||
appendParams(sb, params);
|
appendParams(sb, params);
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user