aboutsummaryrefslogtreecommitdiff
path: root/ec2
diff options
context:
space:
mode:
authorHolden Karau <holden@pigscanfly.ca>2013-04-09 21:37:02 -0700
committerHolden Karau <holden@pigscanfly.ca>2013-04-09 21:37:02 -0700
commit9bf24e1d61a629b410183dfc4296bba994f0a79e (patch)
treedf4702bc639e2a5c3cd8b552bb24894982c7e8c9 /ec2
parentff2130a0ad17388036b66fcdf2b1848e208fa0f8 (diff)
downloadspark-9bf24e1d61a629b410183dfc4296bba994f0a79e.tar.gz
spark-9bf24e1d61a629b410183dfc4296bba994f0a79e.tar.bz2
spark-9bf24e1d61a629b410183dfc4296bba994f0a79e.zip
Just use a loop for retries
Diffstat (limited to 'ec2')
-rw-r--r--ec2/retry_decorator.py44
-rwxr-xr-xec2/spark_ec2.py23
2 files changed, 17 insertions, 50 deletions
diff --git a/ec2/retry_decorator.py b/ec2/retry_decorator.py
deleted file mode 100644
index 1a2f79ae84..0000000000
--- a/ec2/retry_decorator.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import time
-from functools import wraps
-
-def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None):
- """Retry calling the decorated function using an exponential backoff.
-
- http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
- original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
-
- :param ExceptionToCheck: the exception to check. may be a tuple of
- exceptions to check
- :type ExceptionToCheck: Exception or tuple
- :param tries: number of times to try (not retry) before giving up
- :type tries: int
- :param delay: initial delay between retries in seconds
- :type delay: int
- :param backoff: backoff multiplier e.g. value of 2 will double the delay
- each retry
- :type backoff: int
- :param logger: logger to use. If None, print
- :type logger: logging.Logger instance
- """
- def deco_retry(f):
-
- @wraps(f)
- def f_retry(*args, **kwargs):
- mtries, mdelay = tries, delay
- while mtries > 1:
- try:
- return f(*args, **kwargs)
- except ExceptionToCheck, e:
- msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
- if logger:
- logger.warning(msg)
- else:
- print msg
- time.sleep(mdelay)
- mtries -= 1
- mdelay *= backoff
- return f(*args, **kwargs)
-
- return f_retry # true decorator
-
- return deco_retry
diff --git a/ec2/spark_ec2.py b/ec2/spark_ec2.py
index aa2d360fbb..9f2daad2b6 100755
--- a/ec2/spark_ec2.py
+++ b/ec2/spark_ec2.py
@@ -22,7 +22,6 @@ from __future__ import with_statement
import logging
import os
import random
-from retry_decorator import retry
import shutil
import subprocess
import sys
@@ -541,12 +540,24 @@ def scp(host, opts, local_file, dest_file):
(opts.identity_file, local_file, opts.user, host, dest_file), shell=True)
-# Run a command on a host through ssh, throwing an exception if ssh fails
-@retry(subprocess.CalledProcessError, tries=3, delay=30)
+# Run a command on a host through ssh, retrying up to two times
+# and then throwing an exception if ssh continues to fail.
def ssh(host, opts, command):
- subprocess.check_call(
- "ssh -t -o StrictHostKeyChecking=no -i %s %s@%s '%s'" %
- (opts.identity_file, opts.user, host, command), shell=True)
+ tries = 0
+ while True:
+ try:
+ return subprocess.check_call(
+ "ssh -t -o StrictHostKeyChecking=no -i %s %s@%s '%s'" %
+ (opts.identity_file, opts.user, host, command), shell=True)
+ except subprocess.CalledProcessError as e:
+ if (tries > 2):
+ raise e
+ print "Error connecting to host {0}, sleeping 30".format(e)
+ time.sleep(30)
+ tries = tries + 1
+
+
+
# Gets a list of zones to launch instances in