From 880907f8c8c59bcb08a9462fa00bc872c96d6833 Mon Sep 17 00:00:00 2001 From: Pere Miquel Brull Date: Fri, 22 Sep 2023 15:27:17 +0200 Subject: [PATCH] Check for required fields before update (#13308) --- .../service/jdbi3/MlModelRepository.java | 9 ++++++--- .../openmetadata/service/jdbi3/QueryRepository.java | 13 ++++++++----- .../service/jdbi3/StoredProcedureRepository.java | 5 ++++- .../openmetadata/service/jdbi3/TopicRepository.java | 5 ++++- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MlModelRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MlModelRepository.java index 6badaee62dc..0d85c7aaf7d 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MlModelRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/MlModelRepository.java @@ -335,9 +335,12 @@ public class MlModelRepository extends EntityRepository { private void updateAlgorithm(MlModel origModel, MlModel updatedModel) { // Updating an algorithm should be flagged for an ML Model - if (recordChange("algorithm", origModel.getAlgorithm(), updatedModel.getAlgorithm())) { - // Mark the EntityUpdater version change to major - majorVersionChange = true; + // Algorithm is a required field. Cannot be null. + if (updated.getAlgorithm() != null) { + if (recordChange("algorithm", origModel.getAlgorithm(), updatedModel.getAlgorithm())) { + // Mark the EntityUpdater version change to major + majorVersionChange = true; + } } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/QueryRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/QueryRepository.java index 131a7f5fbec..7c00b2fc251 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/QueryRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/QueryRepository.java @@ -235,11 +235,14 @@ public class QueryRepository extends EntityRepository { // Store Query Used in Relation recordChange("usedBy", original.getUsedBy(), updated.getUsedBy(), true); storeQueryUsedIn(updated.getId(), added, deleted); - String originalChecksum = EntityUtil.hash(original.getQuery()); - String updatedChecksum = EntityUtil.hash(updated.getQuery()); - if (!originalChecksum.equals(updatedChecksum)) { - recordChange("query", original.getQuery(), updated.getQuery()); - recordChange("checkSum", original.getChecksum(), updatedChecksum); + // Query is a required field. Cannot be removed. + if (updated.getQuery() != null) { + String originalChecksum = EntityUtil.hash(original.getQuery()); + String updatedChecksum = EntityUtil.hash(updated.getQuery()); + if (!originalChecksum.equals(updatedChecksum)) { + recordChange("query", original.getQuery(), updated.getQuery()); + recordChange("checkSum", original.getChecksum(), updatedChecksum); + } } } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java index bc9fa2caba6..022347d4ecc 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java @@ -112,7 +112,10 @@ public class StoredProcedureRepository extends EntityRepository @Override public void entitySpecificUpdate() { - recordChange("storedProcedureCode", original.getStoredProcedureCode(), updated.getStoredProcedureCode()); + // storedProcedureCode is a required field. Cannot be null. + if (updated.getStoredProcedureCode() != null) { + recordChange("storedProcedureCode", original.getStoredProcedureCode(), updated.getStoredProcedureCode()); + } recordChange("sourceUrl", original.getSourceUrl(), updated.getSourceUrl()); } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TopicRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TopicRepository.java index 95b01850eb6..9911bd8460f 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TopicRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TopicRepository.java @@ -383,7 +383,10 @@ public class TopicRepository extends EntityRepository { public void entitySpecificUpdate() { recordChange("maximumMessageSize", original.getMaximumMessageSize(), updated.getMaximumMessageSize()); recordChange("minimumInSyncReplicas", original.getMinimumInSyncReplicas(), updated.getMinimumInSyncReplicas()); - recordChange("partitions", original.getPartitions(), updated.getPartitions()); + // Partitions is a required field. Cannot be null. + if (updated.getPartitions() != null) { + recordChange("partitions", original.getPartitions(), updated.getPartitions()); + } recordChange("replicationFactor", original.getReplicationFactor(), updated.getReplicationFactor()); recordChange("retentionTime", original.getRetentionTime(), updated.getRetentionTime()); recordChange("retentionSize", original.getRetentionSize(), updated.getRetentionSize());