From 5839efcbf104852bc0c66d4e6c4ceb48c69be87e Mon Sep 17 00:00:00 2001 From: Sriharsha Chintalapani Date: Fri, 2 Feb 2024 09:54:51 -0800 Subject: [PATCH] Fix migration for postgres db (#15009) * Fix openmetadata-ops.sh migrate for Postgres * Fix openmetadata-ops.sh migrate for Postgres --- .../service/jdbi3/MigrationDAO.java | 7 ++-- .../service/util/OpenMetadataOperations.java | 33 +++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MigrationDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MigrationDAO.java index 7fe7b393d2c..3fdf445973b 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MigrationDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MigrationDAO.java @@ -71,10 +71,10 @@ public interface MigrationDAO { @ConnectionAwareSqlUpdate( value = "INSERT INTO server_change_log (version, migrationFileName, checksum, metrics, installed_on)" - + "VALUES (:version, :migrationFileName, :checksum, to_jsonb(:metrics::text), current_timestamp) " + + "VALUES (:version, :migrationFileName, :checksum, (:metrics :: jsonb), current_timestamp) " + "ON CONFLICT (version) DO UPDATE SET " + "migrationFileName = EXCLUDED.migrationFileName, " - + "metrics = to_jsonb(:metrics::text)," + + "metrics = (:metrics :: jsonb)," + "checksum = EXCLUDED.checksum, " + "installed_on = EXCLUDED.installed_on", connectionType = POSTGRES) @@ -124,7 +124,8 @@ public interface MigrationDAO { String checkIfQueryPreviouslyRan(@Bind("checksum") String checksum); @SqlQuery( - "SELECT installed_rank, version, migrationFileName, checksum, installed_on, metrics FROM SERVER_CHANGE_LOG ORDER BY version ASC") + value = + "SELECT installed_rank, version, migrationFileName, checksum, installed_on, metrics FROM SERVER_CHANGE_LOG ORDER BY version ASC") @RegisterRowMapper(FromServerChangeLogMapper.class) List listMetricsFromDBMigrations(); 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 f31038a8f00..9cf78313a50 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 @@ -443,19 +443,26 @@ public class OpenMetadataOperations implements Callable { migrationDAO.listMetricsFromDBMigrations(); Set columns = new LinkedHashSet<>(Set.of("version", "installedOn")); List> rows = new ArrayList<>(); - for (MigrationDAO.ServerChangeLog serverChangeLog : serverChangeLogs) { - List row = new ArrayList<>(); - JsonObject metricsJson = new Gson().fromJson(serverChangeLog.getMetrics(), JsonObject.class); - Set keys = metricsJson.keySet(); - columns.addAll(keys); - row.add(serverChangeLog.getVersion()); - row.add(serverChangeLog.getInstalledOn()); - row.addAll( - metricsJson.entrySet().stream() - .map(Map.Entry::getValue) - .map(JsonElement::toString) - .toList()); - rows.add(row); + try { + for (MigrationDAO.ServerChangeLog serverChangeLog : serverChangeLogs) { + List row = new ArrayList<>(); + if (serverChangeLog.getMetrics() != null) { + JsonObject metricsJson = + new Gson().fromJson(serverChangeLog.getMetrics(), JsonObject.class); + Set keys = metricsJson.keySet(); + columns.addAll(keys); + row.add(serverChangeLog.getVersion()); + row.add(serverChangeLog.getInstalledOn()); + row.addAll( + metricsJson.entrySet().stream() + .map(Map.Entry::getValue) + .map(JsonElement::toString) + .toList()); + rows.add(row); + } + } + } catch (Exception e) { + LOG.warn("Failed to generate migration metrics due to", e); } printToAsciiTable(columns.stream().toList(), rows, "No Server Change log found"); }