diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-01-29 12:19:17 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-01-29 12:19:17 -0500 |
commit | c8b3d4ed3f2638599fc73486cf0f724fa033a638 (patch) | |
tree | 93dfad28f6c44e8c1173507da4cb764d7d81840c /lib/sqlalchemy/testing/provision.py | |
parent | c59bf0007f0148b73c80a3d6b86d6c66ae0ab422 (diff) | |
download | sqlalchemy-c8b3d4ed3f2638599fc73486cf0f724fa033a638.tar.gz |
- put a retry in for PG database provisioning as it locks
on database use
Diffstat (limited to 'lib/sqlalchemy/testing/provision.py')
-rw-r--r-- | lib/sqlalchemy/testing/provision.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py index 3f9ddae73..ce60e99d3 100644 --- a/lib/sqlalchemy/testing/provision.py +++ b/lib/sqlalchemy/testing/provision.py @@ -1,8 +1,10 @@ from sqlalchemy.engine import url as sa_url from sqlalchemy import text +from sqlalchemy import exc from sqlalchemy.util import compat from . import config, engines import os +import time FOLLOWER_IDENT = None @@ -158,7 +160,18 @@ def _pg_create_db(cfg, eng, ident): except Exception: pass currentdb = conn.scalar("select current_database()") - conn.execute("CREATE DATABASE %s TEMPLATE %s" % (ident, currentdb)) + for attempt in range(3): + try: + conn.execute( + "CREATE DATABASE %s TEMPLATE %s" % (ident, currentdb)) + except exc.OperationalError as err: + if attempt != 2 and "accessed by other users" in str(err): + time.sleep(.2) + continue + else: + raise + else: + break @_create_db.for_db("mysql") |