use of com.netflix.metacat.common.dto.notifications.sns.messages.DeletePartitionMessage in project metacat by Netflix.
the class SNSNotificationServiceImpl method notifyOfPartitionDeletion.
/**
* {@inheritDoc}
*/
@Override
@EventListener
public void notifyOfPartitionDeletion(@NonNull final MetacatDeleteTablePartitionPostEvent event) {
log.debug("Received DeleteTablePartition event {}", event);
final String name = event.getName().toString();
final long timestamp = event.getRequestContext().getTimestamp();
final String requestId = event.getRequestContext().getId();
DeletePartitionMessage message = null;
try {
for (final String partitionId : event.getPartitionIds()) {
message = new DeletePartitionMessage(UUID.randomUUID().toString(), timestamp, requestId, name, partitionId);
this.publishNotification(this.partitionTopicArn, message);
this.registry.counter(this.registry.createId(Metrics.CounterSNSNotificationPartitionDelete.name()).withTags(Metrics.statusSuccessMap)).increment();
log.debug("Published delete partition message {} on {}", message, this.partitionTopicArn);
}
} catch (final Exception e) {
handleException(event.getName(), "Unable to publish partition deletion notification", Metrics.CounterSNSNotificationPartitionDelete.name(), message, e);
}
UpdateTablePartitionsMessage tableMessage = null;
try {
// Publish a global message stating how many partitions were updated for the table to the table topic
tableMessage = new UpdateTablePartitionsMessage(UUID.randomUUID().toString(), timestamp, requestId, name, new TablePartitionsUpdatePayload(0, event.getPartitionIds().size()));
this.publishNotification(this.tableTopicArn, tableMessage);
this.registry.counter(this.registry.createId(Metrics.CounterSNSNotificationTablePartitionDelete.name()).withTags(Metrics.statusSuccessMap)).increment();
} catch (final Exception e) {
this.handleException(event.getName(), "Unable to publish table partition delete notification", Metrics.CounterSNSNotificationTablePartitionDelete.name(), tableMessage, e);
}
}
Aggregations