Skip to content

Commit d04ab69

Browse files
committed
Retry on server errors to handle AWS outages.
1 parent ca1b3f6 commit d04ab69

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

glacier/glaciercorecalls.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def write(self, data):
126126
# How many times we tried uploading this block
127127
retries = 0
128128
# How much to sleep between re-tries.
129-
sleep_time = 150
129+
sleep_time = 300
130130

131131
while True:
132132
try:
@@ -140,7 +140,7 @@ def write(self, data):
140140
break
141141

142142
except Exception as e:
143-
if '408' in e.message:
143+
if '408' in e.message or e.code == "ServiceUnavailableException" or e.type == "Server":
144144
if retries >= 10:
145145
if self.logger:
146146
self.logger.warning('Retries exhausted for this block.')
@@ -161,12 +161,16 @@ def write(self, data):
161161
else:
162162
# Commify large numbers
163163
self.logger.warning('Total uploaded size = {:,d}, block hash = {:}'.format(self.uploaded_size, bytes_to_hex(part_tree_hash)))
164+
164165
self.logger.warning('Retries (this block, total) = %d, %d' % (retries, self.total_retries))
166+
self.logger.warning('Check the AWS status at: http://status.aws.amazon.com/')
165167
self.logger.warning('Sleeping %d seconds (%.1f minutes) before retrying this block.' % (sleep_time, sleep_time / 60.0))
166168

167169
time.sleep(sleep_time)
168170

169171
else:
172+
self.logger.warning(e.message)
173+
self.logger.warning('Not re-trying on this error')
170174
raise e
171175

172176
self.uploaded_size += len(data)

0 commit comments

Comments
 (0)