diff --git a/library/cloud/route53 b/library/cloud/route53
index 38db85deb6..e5f23c1a3e 100644
--- a/library/cloud/route53
+++ b/library/cloud/route53
@@ -120,6 +120,7 @@ EXAMPLES = '''
'''
import sys
+import time
try:
import boto
@@ -129,6 +130,20 @@ except ImportError:
print "failed=True msg='boto required for this module'"
sys.exit(1)
+def commit(changes):
+ """Commit changes, but retry PriorRequestNotComplete errors."""
+ retry = 10
+ while True:
+ try:
+ retry -= 1
+ return changes.commit()
+ except boto.route53.exception.DNSServerError, e:
+ code = e.body.split("")[1]
+ code = code.split("
")[0]
+ if code != 'PriorRequestNotComplete' or retry < 0:
+ raise e
+ time.sleep(500)
+
def main():
module = AnsibleModule(
argument_spec = dict(
@@ -240,7 +255,7 @@ def main():
change.add_value(v)
try:
- result = changes.commit()
+ result = commit(changes)
except boto.route53.exception.DNSServerError, e:
txt = e.body.split("")[1]
txt = txt.split("")[0]