public void notify()

in priam/src/main/java/com/netflix/priam/notification/AWSSnsNotificationService.java [64:106]


    public void notify(
            final String msg, final Map<String, MessageAttributeValue> messageAttributes) {
        // e.g. arn:aws:sns:eu-west-1:1234:eu-west-1-cass-sample-backup
        final String topic_arn = this.configuration.getBackupNotificationTopicArn();
        if (!configuration.enableBackupNotification() || StringUtils.isEmpty(topic_arn)) {
            return;
        }

        PublishResult publishResult;
        try {
            publishResult =
                    new BoundedExponentialRetryCallable<PublishResult>() {
                        @Override
                        public PublishResult retriableCall() throws Exception {
                            PublishRequest publishRequest =
                                    new PublishRequest(topic_arn, msg)
                                            .withMessageAttributes(messageAttributes);
                            return snsClient.publish(publishRequest);
                        }
                    }.call();

        } catch (Exception e) {
            logger.error(
                    String.format(
                            "Exhausted retries.  Publishing notification metric for failure and moving on.  Failed msg to publish: %s",
                            msg),
                    e);
            backupMetrics.incrementSnsNotificationFailure();
            return;
        }

        // If here, message was published.  As a extra validation, ensure we have a msg id
        String publishedMsgId = publishResult.getMessageId();
        if (publishedMsgId == null || publishedMsgId.isEmpty()) {
            backupMetrics.incrementSnsNotificationFailure();
            return;
        }

        backupMetrics.incrementSnsNotificationSuccess();
        if (logger.isTraceEnabled()) {
            logger.trace("Published msg:  {} aws sns messageId - {}", msg, publishedMsgId);
        }
    }