Add paramiko/pycrypto atfork workaround (can back out later if not useful), tweak error
message text per skvidal's suggestion
This commit is contained in:
parent
b30ddc4520
commit
706ba9fd9a
2 changed files with 15 additions and 1 deletions
|
@ -70,7 +70,7 @@ class ParamikoConnection(object):
|
||||||
)
|
)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if str(e).find("PID check failed") != -1:
|
if str(e).find("PID check failed") != -1:
|
||||||
raise errors.AnsibleError("paramiko version issue, please upgrade paramiko on the overlord")
|
raise errors.AnsibleError("paramiko version issue, please upgrade paramiko on the machine running ansible")
|
||||||
else:
|
else:
|
||||||
raise errors.AnsibleConnectionFailed(str(e))
|
raise errors.AnsibleConnectionFailed(str(e))
|
||||||
return self
|
return self
|
||||||
|
|
|
@ -33,12 +33,26 @@ import ansible.connection
|
||||||
from ansible import utils
|
from ansible import utils
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
from ansible import callbacks as ans_callbacks
|
from ansible import callbacks as ans_callbacks
|
||||||
|
|
||||||
|
HAS_ATFORK=True
|
||||||
|
try:
|
||||||
|
print "DEBUG: I have atfork"
|
||||||
|
from Crypto.Random import atfork
|
||||||
|
except ImportError:
|
||||||
|
print "DEBUG: I have no atfork, this won't help my problem"
|
||||||
|
HAS_ATFORK=False
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
|
|
||||||
def _executor_hook(job_queue, result_queue):
|
def _executor_hook(job_queue, result_queue):
|
||||||
''' callback used by multiprocessing pool '''
|
''' callback used by multiprocessing pool '''
|
||||||
|
|
||||||
|
# attempt workaround of https://github.com/newsapps/beeswithmachineguns/issues/17
|
||||||
|
# does not occur for everyone, some claim still occurs on newer paramiko
|
||||||
|
# this function not present in CentOS 6
|
||||||
|
if HAS_ATFORK:
|
||||||
|
atfork()
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||||
while not job_queue.empty():
|
while not job_queue.empty():
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue