Fix concurrency issue with Python 3.4 test
We have been seeing failures in parallel Py34 tests caused by the test database being set up more than once. The existing mechanism is not thread-safe. Add a lock around the database setup to ensure the it is ever executed by only one thread. Partially implements: blueprint trove-python3 Change-Id: I68aba50d60b912384080911a6f78283f027c4ee3
This commit is contained in:
parent
d58baf220a
commit
94b716142a
|
@ -12,18 +12,22 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import threading
|
||||
|
||||
from trove.common import cfg
|
||||
from trove.db import get_db_api
|
||||
from trove.db.sqlalchemy import session
|
||||
|
||||
CONF = cfg.CONF
|
||||
DB_SETUP = None
|
||||
LOCK = threading.Lock()
|
||||
|
||||
|
||||
def init_db():
|
||||
global DB_SETUP
|
||||
if DB_SETUP:
|
||||
return
|
||||
from trove.common import cfg
|
||||
from trove.db import get_db_api
|
||||
from trove.db.sqlalchemy import session
|
||||
CONF = cfg.CONF
|
||||
db_api = get_db_api()
|
||||
db_api.db_sync(CONF)
|
||||
session.configure_db(CONF)
|
||||
DB_SETUP = True
|
||||
with LOCK:
|
||||
global DB_SETUP
|
||||
if not DB_SETUP:
|
||||
db_api = get_db_api()
|
||||
db_api.db_sync(CONF)
|
||||
session.configure_db(CONF)
|
||||
DB_SETUP = True
|
||||
|
|
Loading…
Reference in New Issue