Add error handling and logging improvements for database settings loading process.
This commit is contained in:
parent
01dab905d4
commit
dc65b19a8f
|
|
@ -17,6 +17,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.CompletionException;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -58,25 +59,46 @@ public class Connection {
|
||||||
if (database == Databases.DEFAULT) {
|
if (database == Databases.DEFAULT) {
|
||||||
return loadDefaultDatabase(addMappers);
|
return loadDefaultDatabase(addMappers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.debug("Loading settings for database {}", database.getInternalName());
|
||||||
CompletableFuture<DatabaseSettings> settingsFuture = new CompletableFuture<>();
|
CompletableFuture<DatabaseSettings> settingsFuture = new CompletableFuture<>();
|
||||||
|
|
||||||
getConnection(Databases.DEFAULT, (mapper -> mapper.addMapper(SettingsMapper.class))).thenApply(connection -> {
|
getConnection(Databases.DEFAULT, (mapper -> mapper.addMapper(SettingsMapper.class))).thenApply(connection -> {
|
||||||
log.debug("Loading settings for database {}", database.getInternalName());
|
|
||||||
connection.runQuery(session -> {
|
connection.runQuery(session -> {
|
||||||
log.debug("Running query to load settings for database");
|
try {
|
||||||
DatabaseSettings loadedSettings = session.getMapper(SettingsMapper.class).getSettings(database.getInternalName());
|
log.debug("Running query to load settings for database {}", database.getInternalName());
|
||||||
if (loadedSettings == null) {
|
DatabaseSettings loadedSettings = session.getMapper(SettingsMapper.class).getSettings(database.getInternalName());
|
||||||
log.error("Failed to load settings for database {}", database.getInternalName());
|
|
||||||
|
if (loadedSettings == null) {
|
||||||
|
log.error("Failed to load settings for database {}. No settings found in db_connection_settings table.",
|
||||||
|
database.getInternalName());
|
||||||
|
settingsFuture.completeExceptionally(new IllegalStateException(
|
||||||
|
"Database settings for " + database.getInternalName() + " not found in db_connection_settings table"));
|
||||||
|
} else {
|
||||||
|
log.debug("Loaded settings for database {}: host={}, port={}, name={}",
|
||||||
|
database.getInternalName(), loadedSettings.host(), loadedSettings.port(), loadedSettings.name());
|
||||||
|
settingsFuture.complete(loadedSettings);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Error occurred while loading database settings for {}", database.getInternalName(), e);
|
||||||
|
settingsFuture.completeExceptionally(e);
|
||||||
}
|
}
|
||||||
log.debug("Loaded settings {}", loadedSettings);
|
|
||||||
settingsFuture.complete(loadedSettings);
|
|
||||||
});
|
});
|
||||||
return null;
|
return null;
|
||||||
|
}).exceptionally(ex -> {
|
||||||
|
log.error("Failed to access DEFAULT database to load settings for {}", database.getInternalName(), ex);
|
||||||
|
settingsFuture.completeExceptionally(ex);
|
||||||
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
return settingsFuture.thenApply(loadedSettings -> {
|
return settingsFuture.thenApply(loadedSettings -> {
|
||||||
log.debug("Storing connection for database {}", database.getInternalName());
|
log.debug("Storing connection for database {}", database.getInternalName());
|
||||||
Connection connection = new Connection(loadedSettings, addMappers);
|
Connection connection = new Connection(loadedSettings, addMappers);
|
||||||
connections.put(database, connection);
|
connections.put(database, connection);
|
||||||
return connection;
|
return connection;
|
||||||
|
}).exceptionally(ex -> {
|
||||||
|
log.error("Failed to create connection for database {}", database.getInternalName(), ex);
|
||||||
|
throw new CompletionException("Failed to initialize database connection for " + database.getInternalName(), ex);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user