From 1b39c9ca17410518be8d03f733042cb0244c0947 Mon Sep 17 00:00:00 2001 From: Pere Miquel Brull Date: Wed, 27 Aug 2025 08:35:55 +0200 Subject: [PATCH] MINOR - Simplify migration context computing during tests (#23097) --- .../migration/api/MigrationWorkflow.java | 31 +++++++++++++------ .../migration/context/MigrationOps.java | 2 +- .../context/MigrationWorkflowContext.java | 8 +++-- .../service/util/OpenMetadataOperations.java | 2 +- .../service/OpenMetadataApplicationTest.java | 2 +- 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/migration/api/MigrationWorkflow.java b/openmetadata-service/src/main/java/org/openmetadata/service/migration/api/MigrationWorkflow.java index c57c18ccc48..c46d50331c8 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/migration/api/MigrationWorkflow.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/migration/api/MigrationWorkflow.java @@ -30,6 +30,7 @@ import org.openmetadata.service.util.AsciiTable; public class MigrationWorkflow { public static final String SUCCESS_MSG = "Success"; public static final String FAILED_MSG = "Failed due to : "; + public static final String CURRENT = "Current"; private List migrations; private final String nativeSQLScriptRootPath; private final ConnectionType connectionType; @@ -249,7 +250,12 @@ public class MigrationWorkflow { printToAsciiTable(columns.stream().toList(), allRows, "No Server Migration To be Run"); } - public void runMigrationWorkflows() { + /** + * Run the Migration Workflow + * @param computeAllContext If true, compute the context for each executed migration. Otherwise, we'll only compute + * the context for the initial and last state of the database. + */ + public void runMigrationWorkflows(boolean computeAllContext) { List columns = Arrays.asList( "Version", @@ -261,12 +267,18 @@ public class MigrationWorkflow { List> allRows = new ArrayList<>(); try (Handle transactionHandler = jdbi.open()) { MigrationWorkflowContext context = new MigrationWorkflowContext(transactionHandler); - if (currentMaxMigrationVersion.isPresent()) { - LOG.debug("Current Max version {}", currentMaxMigrationVersion.get()); - context.computeInitialContext(currentMaxMigrationVersion.get()); - } else { - context.computeInitialContext("1.1.0"); - } + String currentVersion = currentMaxMigrationVersion.orElse(CURRENT); + LOG.debug("Current Max version {}", currentVersion); + // Add the current version context + context.computeInitialContext(currentVersion); + allRows.add( + List.of( + currentVersion, + CURRENT, + CURRENT, + CURRENT, + CURRENT, + context.getMigrationContext().get(currentVersion).getResults().toString())); LOG.info("[MigrationWorkflow] WorkFlow Started"); try { for (MigrationProcess process : migrations) { @@ -291,8 +303,9 @@ public class MigrationWorkflow { // Post DDL Scripts runPostDDLChanges(row, process); - // Build Context - context.computeMigrationContext(process); + // Build Context only if required (during ops), or if it's the last migration + context.computeMigrationContext( + process, computeAllContext || migrations.indexOf(process) == migrations.size() - 1); row.add( context.getMigrationContext().get(process.getVersion()).getResults().toString()); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationOps.java b/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationOps.java index ecccf2a71d9..26a53a5ea84 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationOps.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationOps.java @@ -25,7 +25,7 @@ public class MigrationOps { try { this.result = handle.createQuery(query).mapTo(Long.class).one(); } catch (Exception ex) { - LOG.warn(String.format("Migration Op [%s] failed due to [%s]", name, ex)); + LOG.debug(String.format("Migration Op [%s] failed due to [%s]", name, ex)); } } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationWorkflowContext.java b/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationWorkflowContext.java index 8c610424704..eb178284249 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationWorkflowContext.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/migration/context/MigrationWorkflowContext.java @@ -21,10 +21,14 @@ public class MigrationWorkflowContext { computeMigrationSafely(new MigrationContext(currentMaxMigrationVersion, List.of(), handle)); } - public void computeMigrationContext(MigrationProcess process) { + public void computeMigrationContext(MigrationProcess process, boolean compute) { MigrationContext context = new MigrationContext(process.getVersion(), process.getMigrationOps(), handle); - computeMigrationSafely(context); + if (compute) { + computeMigrationSafely(context); + } else { + this.migrationContext.put(context.getVersion(), context); + } } private void computeMigrationSafely(MigrationContext context) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/util/OpenMetadataOperations.java b/openmetadata-service/src/main/java/org/openmetadata/service/util/OpenMetadataOperations.java index 027af955ee4..28a52c18893 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/util/OpenMetadataOperations.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/util/OpenMetadataOperations.java @@ -1576,7 +1576,7 @@ public class OpenMetadataOperations implements Callable { jdbi, nativeSQLScriptRootPath, connType, extensionSQLScriptRootPath, config, force); workflow.loadMigrations(); workflow.printMigrationInfo(); - workflow.runMigrationWorkflows(); + workflow.runMigrationWorkflows(true); } private void initOrganization() { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/OpenMetadataApplicationTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/OpenMetadataApplicationTest.java index d59ec4a0819..a03e57b5174 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/OpenMetadataApplicationTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/OpenMetadataApplicationTest.java @@ -282,7 +282,7 @@ public abstract class OpenMetadataApplicationTest { Entity.setJobDAO(jdbi.onDemand(JobDAO.class)); Entity.initializeRepositories(config, jdbi); workflow.loadMigrations(); - workflow.runMigrationWorkflows(); + workflow.runMigrationWorkflows(false); WorkflowHandler.initialize(config); SettingsCache.initialize(config); ApplicationHandler.initialize(config);