You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by md...@apache.org on 2017/12/08 02:38:01 UTC
usergrid git commit: don't update SQS queue permissions if the SQS
queue already exists
Repository: usergrid
Updated Branches:
refs/heads/hotfix_20171205 71169f89a -> acbecde82
don't update SQS queue permissions if the SQS queue already exists
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/acbecde8
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/acbecde8
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/acbecde8
Branch: refs/heads/hotfix_20171205
Commit: acbecde8282cd987c07054770e9a990f771511ff
Parents: 71169f8
Author: Mike Dunker <md...@google.com>
Authored: Thu Dec 7 18:37:38 2017 -0800
Committer: Mike Dunker <md...@google.com>
Committed: Thu Dec 7 18:37:38 2017 -0800
----------------------------------------------------------------------
.../queue/impl/SNSQueueManagerImpl.java | 29 +++++++++++++++-----
1 file changed, 22 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/acbecde8/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SNSQueueManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SNSQueueManagerImpl.java b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SNSQueueManagerImpl.java
index b5d52dc..60554c4 100644
--- a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SNSQueueManagerImpl.java
+++ b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/impl/SNSQueueManagerImpl.java
@@ -195,6 +195,7 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
logger.trace( "SNS/SQS Setup: primaryQueueArn={}", primaryQueueArn );
}
+ boolean localQueueCreated = false;
if ( primaryQueueArn == null ) {
if ( logger.isTraceEnabled() ) {
logger.trace( "SNS/SQS Setup: primaryQueueArn is null, creating queue..." );
@@ -202,6 +203,7 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
queueUrl = AmazonNotificationUtils.createQueue( sqs, queueName, fig );
primaryQueueArn = AmazonNotificationUtils.getQueueArnByUrl( sqs, queueUrl );
+ localQueueCreated = true;
if ( logger.isTraceEnabled() ) {
logger.trace( "SNS/SQS Setup: New Queue URL=[{}] ARN=[{}]", queueUrl, primaryQueueArn );
@@ -213,10 +215,12 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
SubscribeRequest primarySubscribeRequest = new SubscribeRequest( primaryTopicArn, "sqs", primaryQueueArn );
sns.subscribe( primarySubscribeRequest );
- // ensure the SNS primary topic has permission to send to the primary SQS queue
- List<String> primaryTopicArnList = new ArrayList<>();
- primaryTopicArnList.add( primaryTopicArn );
- AmazonNotificationUtils.setQueuePermissionsToReceive( sqs, queueUrl, primaryTopicArnList );
+ if (localQueueCreated) {
+ // ensure the SNS primary topic has permission to send to the primary SQS queue
+ List<String> primaryTopicArnList = new ArrayList<>();
+ primaryTopicArnList.add(primaryTopicArn);
+ AmazonNotificationUtils.setQueuePermissionsToReceive(sqs, queueUrl, primaryTopicArnList);
+ }
}
catch ( AmazonServiceException e ) {
logger.error(
@@ -235,9 +239,11 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
final Map<String, String> arrQueueArns = new HashMap<>( regionNames.length + 1 );
final Map<String, String> topicArns = new HashMap<>( regionNames.length + 1 );
+ final Map<String, Boolean> queuesCreated = new HashMap<>(regionNames.length + 1);
arrQueueArns.put(primaryQueueArn, fig.getPrimaryRegion());
topicArns.put(primaryTopicArn, fig.getPrimaryRegion());
+ queuesCreated.put(fig.getPrimaryRegion(), localQueueCreated);
for ( String regionName : regionNames ) {
@@ -259,13 +265,19 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
topicArns.put( topicArn, regionName );
// create the SQS queue if it doesn't exist
+ boolean regionQueueCreated = false;
String queueArn = AmazonNotificationUtils.getQueueArnByName( sqsClient, queueName );
if ( queueArn == null ) {
queueUrl = AmazonNotificationUtils.createQueue( sqsClient, queueName, fig );
queueArn = AmazonNotificationUtils.getQueueArnByUrl( sqsClient, queueUrl );
+ regionQueueCreated = true;
+ } else if (regionName.equals(fig.getPrimaryRegion()) && localQueueCreated) {
+ // created SQS queue earlier
+ regionQueueCreated = true;
}
arrQueueArns.put( queueArn, regionName );
+ queuesCreated.put( regionName, regionQueueCreated);
}
if (logger.isTraceEnabled()) {
@@ -321,9 +333,12 @@ public class SNSQueueManagerImpl implements LegacyQueueManager {
if (logger.isTraceEnabled()) {
logger.trace("Adding permission to receive messages...");
}
- // add permission to each queue, providing a list of topics that it's subscribed to
- AmazonNotificationUtils
- .setQueuePermissionsToReceive( subscribeSqsClient, subscribeQueueUrl, topicArnList );
+ Boolean regionQueueCreated = queuesCreated.get(strSqsRegion);
+ if (regionQueueCreated != null && regionQueueCreated) {
+ // add permission to queue, providing a list of topics that it's subscribed to
+ AmazonNotificationUtils
+ .setQueuePermissionsToReceive(subscribeSqsClient, subscribeQueueUrl, topicArnList);
+ }
}
}