From c19d09f60b2d501698b741a123cc6b8203969016 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Mon, 17 Jun 2019 15:30:40 -0700 Subject: [PATCH] Give ECAppIter greenthreads a chance to wrap up Otherwise, we can hit a "generator already executing" error in test/functional/test_slo.py:TestSlo.test_slo_multi_ranged_get Also, set a *slightly* newer lower-bound for greenlet (from 2011 instead of 2010) so the sleep() doesn't cause us to lose exception state. Change-Id: Id458fc0a43fd71aab9f6edbacc1f0b370c9f7537 --- lower-constraints.txt | 2 +- requirements.txt | 2 +- swift/proxy/controllers/obj.py | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lower-constraints.txt b/lower-constraints.txt index 24e0e1b5b6..536e8b61ed 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -25,7 +25,7 @@ flake8==2.5.5 future==0.16.0 gitdb2==2.0.3 GitPython==2.1.8 -greenlet==0.3.1 +greenlet==0.3.2 hacking==0.11.0 idna==2.6 imagesize==1.0.0 diff --git a/requirements.txt b/requirements.txt index 04f2af2c1c..d4c994af27 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ dnspython>=1.15.0;python_version=='2.7' # http://www.dnspython.org/LICENSE eventlet>=0.25.0 # MIT -greenlet>=0.3.1 +greenlet>=0.3.2 netifaces>=0.8,!=0.10.0,!=0.10.1 PasteDeploy>=1.3.3 lxml>=3.4.1 diff --git a/swift/proxy/controllers/obj.py b/swift/proxy/controllers/obj.py index 8e6c475463..3015362c99 100644 --- a/swift/proxy/controllers/obj.py +++ b/swift/proxy/controllers/obj.py @@ -38,7 +38,7 @@ from hashlib import md5 from swift import gettext_ as _ from greenlet import GreenletExit -from eventlet import GreenPile +from eventlet import GreenPile, sleep from eventlet.queue import Queue from eventlet.timeout import Timeout @@ -1066,6 +1066,7 @@ class ECAppIter(object): # executing the internal_parts_iters. if self.stashed_iter: self.stashed_iter.close() + sleep() # Give the per-frag threads a chance to clean up for it in self.internal_parts_iters: close_if_possible(it)