summaryrefslogtreecommitdiffstats
path: root/openstack/common/db/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'openstack/common/db/sqlalchemy')
-rw-r--r--openstack/common/db/sqlalchemy/session.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/openstack/common/db/sqlalchemy/session.py b/openstack/common/db/sqlalchemy/session.py
index 3b2d9df..700273a 100644
--- a/openstack/common/db/sqlalchemy/session.py
+++ b/openstack/common/db/sqlalchemy/session.py
@@ -248,8 +248,10 @@ from eventlet import db_pool
from eventlet import greenthread
try:
import MySQLdb
+ from MySQLdb.constants import CLIENT as mysql_client_constants
except ImportError:
MySQLdb = None
+ mysql_client_constants = None
from sqlalchemy.exc import DisconnectionError, OperationalError, IntegrityError
import sqlalchemy.interfaces
import sqlalchemy.orm
@@ -511,9 +513,21 @@ def create_engine(sql_connection):
'user': connection_dict.username,
'min_size': CONF.sql_min_pool_size,
'max_size': CONF.sql_max_pool_size,
- 'max_idle': CONF.sql_idle_timeout}
- creator = db_pool.ConnectionPool(MySQLdb, **pool_args)
- engine_args['creator'] = creator.create
+ 'max_idle': CONF.sql_idle_timeout,
+ 'client_flag': mysql_client_constants.FOUND_ROWS}
+
+ pool = db_pool.ConnectionPool(MySQLdb, **pool_args)
+
+ def creator():
+ conn = pool.create()
+ if isinstance(conn, tuple):
+ # NOTE(belliott) eventlet >= 0.10 returns a tuple
+ now, now, conn = conn
+
+ return conn
+
+ engine_args['creator'] = creator
+
else:
engine_args['pool_size'] = CONF.sql_max_pool_size
if CONF.sql_max_overflow is not None: