]> git.basschouten.com Git - openhab-addons.git/commitdiff
Catch exception in case of connection to database failed during activation of servive...
authorChristoph Weitkamp <github@christophweitkamp.de>
Sat, 19 Feb 2022 20:37:23 +0000 (21:37 +0100)
committerGitHub <noreply@github.com>
Sat, 19 Feb 2022 20:37:23 +0000 (21:37 +0100)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java

index 3a39efb32372e18f4ee398aca60bcc91c35fe775..3fcdf1e3d4867b16c3a57568314f32a3451cdb3e 100644 (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;