summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorChris Behrens <cbehrens@codestud.com>2013-02-18 04:00:38 +0000
committerChris Behrens <cbehrens@codestud.com>2013-02-21 05:25:13 +0000
commitde09aa254f647dc0dab0cd67c0ed26e093df180a (patch)
tree61ffb618394280b0721d2438e797bbe3730f25b3 /nova/db
parenta41d9c6c105de57b32d2f9a854da70243e348cf4 (diff)
Move DB thread pooling to DB API.
The eventlet db_pool wrapping done in sqlalchemy is wrong. It needs to be around the whole DB API call. Fixes bug 1128605 Syncs nova with the fix in oslo. Moves nova to use the oslo version of db/api.py to import the DB API implementation. Renames configuration option sql_dbpool_enable to dbapi_use_tpool NOTE: tpool will not work without a fix to eventlet for Threads + locking. DocImpact Change-Id: I6c75b6138d38d12261d133f2cb2f5e59c667f837
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py11
-rw-r--r--nova/db/sqlalchemy/api.py5
2 files changed, 10 insertions, 6 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index e38cf1866..d14999b45 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -47,14 +47,11 @@ from oslo.config import cfg
from nova.cells import rpcapi as cells_rpcapi
from nova import exception
+from nova.openstack.common.db import api as db_api
from nova.openstack.common import log as logging
-from nova import utils
db_opts = [
- cfg.StrOpt('db_backend',
- default='sqlalchemy',
- help='The backend to use for db'),
cfg.BoolOpt('enable_new_services',
default=True,
help='Services to be added to the available pool on create'),
@@ -69,8 +66,10 @@ db_opts = [
CONF = cfg.CONF
CONF.register_opts(db_opts)
-IMPL = utils.LazyPluggable('db_backend',
- sqlalchemy='nova.db.sqlalchemy.api')
+_BACKEND_MAPPING = {'sqlalchemy': 'nova.db.sqlalchemy.api'}
+
+
+IMPL = db_api.DBAPI(backend_mapping=_BACKEND_MAPPING)
LOG = logging.getLogger(__name__)
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index d13c60969..360bd1b3a 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -78,6 +78,11 @@ get_engine = db_session.get_engine
get_session = db_session.get_session
+def get_backend():
+ """The backend is this module itself."""
+ return sys.modules[__name__]
+
+
def require_admin_context(f):
"""Decorator to require admin request context.