summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-08-23 04:11:44 +0000
committerGerrit Code Review <review@openstack.org>2012-08-23 04:11:44 +0000
commit9fecad9e6f7803f3422e7769c01ba3b9076ed308 (patch)
treea6644eef8b002f690d0fa230d80227129fc03f64
parentf06c94bbfa2d01d7ca351c2693e1c90290952155 (diff)
parent377a65ffd7ee744dec9e6e909b2263b39f38efda (diff)
downloadnova-9fecad9e6f7803f3422e7769c01ba3b9076ed308.tar.gz
nova-9fecad9e6f7803f3422e7769c01ba3b9076ed308.tar.xz
nova-9fecad9e6f7803f3422e7769c01ba3b9076ed308.zip
Merge "Update sqlite to use PoolEvents for regexp."
-rw-r--r--nova/db/sqlalchemy/session.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py
index cada9d79a..6e754be7e 100644
--- a/nova/db/sqlalchemy/session.py
+++ b/nova/db/sqlalchemy/session.py
@@ -57,6 +57,15 @@ def synchronous_switch_listener(dbapi_conn, connection_rec):
dbapi_conn.execute("PRAGMA synchronous = OFF")
+def add_regexp_listener(dbapi_con, con_record):
+ """Add REGEXP function to sqlite connections."""
+
+ def regexp(expr, item):
+ reg = re.compile(expr)
+ return reg.search(unicode(item)) is not None
+ dbapi_con.create_function('regexp', 2, regexp)
+
+
def ping_listener(dbapi_conn, connection_rec, connection_proxy):
"""
Ensures that MySQL connections checked out of the
@@ -86,16 +95,6 @@ def is_db_connection_error(args):
return False
-def regexp(expr, item):
- reg = re.compile(expr)
- return reg.search(unicode(item)) is not None
-
-
-class AddRegexFactory(sqlalchemy.interfaces.PoolListener):
- def connect(delf, dbapi_con, con_record):
- dbapi_con.create_function('REGEXP', 2, regexp)
-
-
def get_engine():
"""Return a SQLAlchemy engine."""
global _ENGINE
@@ -120,7 +119,6 @@ def get_engine():
if FLAGS.sql_connection == "sqlite://":
engine_args["poolclass"] = StaticPool
engine_args["connect_args"] = {'check_same_thread': False}
- engine_args['listeners'] = [AddRegexFactory()]
_ENGINE = sqlalchemy.create_engine(FLAGS.sql_connection, **engine_args)
@@ -130,6 +128,7 @@ def get_engine():
if not FLAGS.sqlite_synchronous:
sqlalchemy.event.listen(_ENGINE, 'connect',
synchronous_switch_listener)
+ sqlalchemy.event.listen(_ENGINE, 'connect', add_regexp_listener)
if (FLAGS.sql_connection_trace and
_ENGINE.dialect.dbapi.__name__ == 'MySQLdb'):