From ce69283e201b9f46a10bac083373b325ed3a464b Mon Sep 17 00:00:00 2001 From: Cole Snodgrass Date: Mon, 12 Dec 2022 15:33:24 -0800 Subject: [PATCH 1/2] remove dupe config section; add DatabaseEventListener --- .../services/DatabaseEventListener.java | 52 +++++++++++++++++++ .../src/main/resources/application.yml | 2 - 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java b/airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java new file mode 100644 index 0000000000000..68e10bca02f03 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.services; + +import io.airbyte.db.check.DatabaseCheckException; +import io.airbyte.db.check.DatabaseMigrationCheck; +import io.micronaut.context.event.ApplicationEventListener; +import io.micronaut.core.annotation.Order; +import io.micronaut.runtime.server.event.ServerStartupEvent; +import jakarta.inject.Named; +import jakarta.inject.Singleton; +import java.lang.invoke.MethodHandles; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Singleton +@Order(1) +public class DatabaseEventListener implements ApplicationEventListener { + + private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private final DatabaseMigrationCheck configsMigrationCheck; + + private final DatabaseMigrationCheck jobsMigrationCheck; + + public DatabaseEventListener( + @Named("configsDatabaseMigrationCheck") final DatabaseMigrationCheck configsMigrationCheck, + @Named("jobsDatabaseMigrationCheck") final DatabaseMigrationCheck jobsMigrationCheck) { + this.configsMigrationCheck = configsMigrationCheck; + this.jobsMigrationCheck = jobsMigrationCheck; + } + + @Override + public void onApplicationEvent(final ServerStartupEvent event) { + log.info("Checking configs database flyway migration version..."); + try { + configsMigrationCheck.check(); + } catch (final DatabaseCheckException e) { + throw new RuntimeException(e); + } + + log.info("Checking jobs database flyway migration version..."); + try { + jobsMigrationCheck.check(); + } catch (final DatabaseCheckException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/airbyte-server/src/main/resources/application.yml b/airbyte-server/src/main/resources/application.yml index 72826a35be1bc..3b6c04b20adf0 100644 --- a/airbyte-server/src/main/resources/application.yml +++ b/airbyte-server/src/main/resources/application.yml @@ -23,8 +23,6 @@ airbyte: initialization-timeout-ms: ${JOBS_DATABASE_INITIALIZATION_TIMEOUT_MS:60000} minimum-migration-version: ${JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION} version: ${AIRBYTE_VERSION} - workspace: - root: ${WORKSPACE_ROOT} secret: persistence: ${SECRET_PERSISTENCE:TESTING_CONFIG_DB_TABLE} store: From 1acbda79230b18d074ab34b26d7cbb91f0931ee8 Mon Sep 17 00:00:00 2001 From: Cole Snodgrass Date: Mon, 12 Dec 2022 15:55:57 -0800 Subject: [PATCH 2/2] move eventlistner to correct package; update implementation --- .../{services => }/DatabaseEventListener.java | 14 ++++++------- .../server/config/HelperBeanFactory.java | 21 +++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) rename airbyte-server/src/main/java/io/airbyte/server/{services => }/DatabaseEventListener.java (80%) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/config/HelperBeanFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java b/airbyte-server/src/main/java/io/airbyte/server/DatabaseEventListener.java similarity index 80% rename from airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java rename to airbyte-server/src/main/java/io/airbyte/server/DatabaseEventListener.java index 68e10bca02f03..099802225be9b 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/services/DatabaseEventListener.java +++ b/airbyte-server/src/main/java/io/airbyte/server/DatabaseEventListener.java @@ -2,13 +2,13 @@ * Copyright (c) 2022 Airbyte, Inc., all rights reserved. */ -package io.airbyte.server.services; +package io.airbyte.server; import io.airbyte.db.check.DatabaseCheckException; import io.airbyte.db.check.DatabaseMigrationCheck; -import io.micronaut.context.event.ApplicationEventListener; +import io.micronaut.context.event.StartupEvent; import io.micronaut.core.annotation.Order; -import io.micronaut.runtime.server.event.ServerStartupEvent; +import io.micronaut.runtime.event.annotation.EventListener; import jakarta.inject.Named; import jakarta.inject.Singleton; import java.lang.invoke.MethodHandles; @@ -16,8 +16,7 @@ import org.slf4j.LoggerFactory; @Singleton -@Order(1) -public class DatabaseEventListener implements ApplicationEventListener { +public class DatabaseEventListener { private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @@ -32,8 +31,9 @@ public DatabaseEventListener( this.jobsMigrationCheck = jobsMigrationCheck; } - @Override - public void onApplicationEvent(final ServerStartupEvent event) { + @EventListener + @Order(1) + public void onStartup(final StartupEvent event) { log.info("Checking configs database flyway migration version..."); try { configsMigrationCheck.check(); diff --git a/airbyte-server/src/main/java/io/airbyte/server/config/HelperBeanFactory.java b/airbyte-server/src/main/java/io/airbyte/server/config/HelperBeanFactory.java new file mode 100644 index 0000000000000..1f7b478f5acf8 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/config/HelperBeanFactory.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.config; + +import io.airbyte.config.persistence.ConfigRepository; +import io.airbyte.persistence.job.JobPersistence; +import io.airbyte.persistence.job.WorkspaceHelper; +import io.micronaut.context.annotation.Factory; +import jakarta.inject.Singleton; + +@Factory +public class HelperBeanFactory { + + @Singleton + public WorkspaceHelper workspaceHelper(final ConfigRepository configRepository, final JobPersistence jobPersistence) { + return new WorkspaceHelper(configRepository, jobPersistence); + } + +}