Merge branch 'api-to-run-ddl-manually' into ebean-new

# Conflicts:
#	ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java
This commit is contained in:
Roland Praml committed 2022-01-03 16:05:17 +01:00
commit 301d8b6f1f
7 files changed
+55 -84

No files matched your search

@@ -109,8 +109,12 @@ public final class DefaultContainer implements SpiContainer {
InternalConfiguration c = new InternalConfiguration(online, clusterManager, executor, config, bootupClasses);
DefaultServer server = new DefaultServer(c, c.cacheManager());
// generate and run DDL if required plus other plugins
if (!DbOffline.isGenerateMigration()) {
startServer(online, server);
initServer(online, server);
if (online && config.getTenantMode().isDdlEnabled() && !config.skipStart()) {
server.start();
}
}
DbOffline.reset();
log.info("Started database[{}] platform[{}] in {}ms", config.getName(), config.getDatabasePlatform().getPlatform(), System.currentTimeMillis() - start);
@@ -141,7 +145,7 @@ public final class DefaultContainer implements SpiContainer {
}
}
private void startServer(boolean online, DefaultServer server) {
private void initServer(boolean online, DefaultServer server) {
server.executePlugins(online);
// initialise prior to registering with clusterManager
server.initialise();
@@ -150,8 +154,6 @@ public final class DefaultContainer implements SpiContainer {
clusterManager.registerServer(server);
}
}
// start any services after registering with clusterManager
server.start();
}
/**
@@ -55,7 +55,6 @@ import io.ebean.config.QueryPlanListener;
import io.ebean.config.SlowQueryEvent;
import io.ebean.config.SlowQueryListener;
import io.ebean.config.TempFileProvider;
import io.ebean.config.TenantMode;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.event.BeanPersistController;
import io.ebean.event.ShutdownManager;
@@ -367,53 +366,29 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
encryptKeyManager.initialise();
}
serverCacheManager.enabledRegions(config.getEnabledL2Regions());
}
/**
* Start any services after registering with the ClusterManager.
*/
public void start() {
// check, if DB is available to run DDL and migration
boolean dbAvailable = !config.isDocStoreOnly()
&& !config.isDbOffline()
&& config.getDataSource() != null
&& config.getTenantMode().isDdlEnabled();
if (dbAvailable) {
if (config.isDdlRun()) {
runDdl();
}
if (config.isRunMigration()) {
runMigration();
}
} else if (config.isDdlRun() || config.isRunMigration()) {
log.warn("There was a request to run DDL or migration, but this is currently not possible, as the database is not available");
}
startQueryPlanCapture();
}
@Override
public void runDdl() {
ddlGenerator.runDdl();
}
public void start() {
@Override
public void runMigration() {
final AutoMigrationRunner migrationRunner = ServiceUtil.service(AutoMigrationRunner.class);
if (migrationRunner == null) {
throw new IllegalStateException(
"No AutoMigrationRunner found. Probably ebean-migration is not in the classpath?");
if (config.isRunMigration()) {
final AutoMigrationRunner migrationRunner = ServiceUtil.service(AutoMigrationRunner.class);
if (migrationRunner == null) {
throw new IllegalStateException("No AutoMigrationRunner found. Probably ebean-migration is not in the classpath?");
}
final String dbSchema = config.getDbSchema();
if (dbSchema != null) {
migrationRunner.setDefaultDbSchema(dbSchema);
}
migrationRunner.setName(config.getName());
migrationRunner.setPlatform(config.getDatabasePlatform().getPlatform().base().name().toLowerCase());
migrationRunner.loadProperties(config.getProperties());
migrationRunner.run(config.getDataSource());
} else if (config.isDdlRun()) {
ddlGenerator.runDdl();
}
final String dbSchema = config.getDbSchema();
if (dbSchema != null) {
migrationRunner.setDefaultDbSchema(dbSchema);
}
migrationRunner.setName(config.getName());
migrationRunner.setPlatform(config.getDatabasePlatform().getPlatform().base().name().toLowerCase());
migrationRunner.loadProperties(config.getProperties());
migrationRunner.run(dataSource());
}
private void startQueryPlanCapture() {