From 1d626506050b4cb9f83957dbcae501b9203a1abe Mon Sep 17 00:00:00 2001 From: jtian Date: Mon, 19 Jul 2021 16:06:44 -0700 Subject: [PATCH 1/2] Publish the list of partition ids on TABLE_PARTITION_UPDATE event --- .../TablePartitionsUpdatePayload.java | 7 +++++- .../sns/SNSNotificationServiceImpl.java | 6 +++-- .../sns/SNSNotificationServiceUtil.java | 23 +++++++++++++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/metacat-common/src/main/java/com/netflix/metacat/common/dto/notifications/sns/payloads/TablePartitionsUpdatePayload.java b/metacat-common/src/main/java/com/netflix/metacat/common/dto/notifications/sns/payloads/TablePartitionsUpdatePayload.java index 7a83d7733..0eb9fabea 100644 --- a/metacat-common/src/main/java/com/netflix/metacat/common/dto/notifications/sns/payloads/TablePartitionsUpdatePayload.java +++ b/metacat-common/src/main/java/com/netflix/metacat/common/dto/notifications/sns/payloads/TablePartitionsUpdatePayload.java @@ -24,6 +24,7 @@ import lombok.ToString; import javax.annotation.Nullable; +import java.util.List; /** * Information about how the partitions have changed when a table was updated. @@ -39,6 +40,7 @@ public class TablePartitionsUpdatePayload { private final int numCreatedPartitions; private final int numDeletedPartitions; private final String message; + private final List partitionsUpdated; /** * Constructor. @@ -46,16 +48,19 @@ public class TablePartitionsUpdatePayload { * @param numCreatedPartitions The number of partitions that were created for the table * @param numDeletedPartitions The number of partitions that were deleted from the table * @param message The message about the partition ids. + * @param partitionsUpdated The list of ids of the partitions that were updated */ @JsonCreator public TablePartitionsUpdatePayload( @Nullable @JsonProperty("latestDeleteColumnValue") final String latestDeleteColumnValue, @JsonProperty("numCreatedPartitions") final int numCreatedPartitions, @JsonProperty("numDeletedPartitions") final int numDeletedPartitions, - @JsonProperty("message") final String message) { + @JsonProperty("message") final String message, + @JsonProperty("partitionsUpdated") final List partitionsUpdated) { this.latestDeleteColumnValue = latestDeleteColumnValue; this.numCreatedPartitions = numCreatedPartitions; this.numDeletedPartitions = numDeletedPartitions; this.message = message; + this.partitionsUpdated = partitionsUpdated; } } diff --git a/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceImpl.java b/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceImpl.java index 233e7b598..3142ae0f0 100644 --- a/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceImpl.java +++ b/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceImpl.java @@ -123,7 +123,8 @@ public void notifyOfPartitionAddition(final MetacatSaveTablePartitionPostEvent e createTablePartitionsUpdatePayload(event.getPartitions(), event); } else { partitionsUpdatePayload = new TablePartitionsUpdatePayload(null, event.getPartitions().size(), 0, - SNSNotificationPartitionAddMsg.PARTITION_KEY_UNABLED.name()); + SNSNotificationPartitionAddMsg.PARTITION_KEY_UNABLED.name(), + SNSNotificationServiceUtil.getPartitionNameListFromDtos(event.getPartitions())); } final UpdateTablePartitionsMessage tableMessage = new UpdateTablePartitionsMessage( UUID.randomUUID().toString(), @@ -182,7 +183,8 @@ public void notifyOfPartitionDeletion(final MetacatDeleteTablePartitionPostEvent final String requestId = event.getRequestContext().getId(); final TablePartitionsUpdatePayload partitionsUpdatePayload; partitionsUpdatePayload = new TablePartitionsUpdatePayload(null, 0, event.getPartitions().size(), - SNSNotificationPartitionAddMsg.PARTITION_KEY_UNABLED.name()); + SNSNotificationPartitionAddMsg.PARTITION_KEY_UNABLED.name(), + SNSNotificationServiceUtil.getPartitionNameListFromDtos(event.getPartitions())); final UpdateTablePartitionsMessage tableMessage = new UpdateTablePartitionsMessage( UUID.randomUUID().toString(), diff --git a/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceUtil.java b/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceUtil.java index a4c1ac6ac..44b4fa6c1 100644 --- a/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceUtil.java +++ b/metacat-main/src/main/java/com/netflix/metacat/main/services/notifications/sns/SNSNotificationServiceUtil.java @@ -60,6 +60,7 @@ public final class SNSNotificationServiceUtil { //ISO basic date format: 20180101 private static final Pattern TIMESTAMP_FORMAT = Pattern.compile("^(?