Catch exception in case of connection to database failed during activation of servive (#12313)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
This commit is contained in:
Christoph Weitkamp 2022-02-19 21:37:23 +01:00 committed by GitHub
parent 3b0c2ca19f
commit 187937fbd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,6 +12,7 @@
*/
package org.openhab.persistence.jdbc.internal;
import java.sql.SQLInvalidAuthorizationSpecException;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.HashMap;
@ -34,6 +35,8 @@ import org.openhab.persistence.jdbc.dto.JdbcPersistenceItemInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException;
/**
* Mapper class
*
@ -203,13 +206,24 @@ public class JdbcMapper {
/***********************
* DATABASE CONNECTION *
***********************/
@SuppressWarnings("null")
protected boolean openConnection() {
logger.debug("JDBC::openConnection isDriverAvailable: {}", conf.isDriverAvailable());
if (conf.isDriverAvailable() && !conf.isDbConnected()) {
logger.info("JDBC::openConnection: Driver is available::Yank setupDataSource");
Yank.setupDefaultConnectionPool(conf.getHikariConfiguration());
conf.setDbConnected(true);
return true;
try {
Yank.setupDefaultConnectionPool(conf.getHikariConfiguration());
conf.setDbConnected(true);
return true;
} catch (PoolInitializationException e) {
if (e.getCause() instanceof SQLInvalidAuthorizationSpecException) {
logger.warn("JDBC::openConnection: failed to open connection: {}", e.getCause().getMessage());
} else {
logger.warn("JDBC::openConnection: failed to open connection: {}", e.getMessage());
}
initialized = false;
return false;
}
} else if (!conf.isDriverAvailable()) {
logger.warn("JDBC::openConnection: no driver available!");
initialized = false;