Merge "Add DB operations tracing"

This commit is contained in:
Jenkins 2017-01-26 06:22:21 +00:00 committed by Gerrit Code Review
commit 3bd7a0742c
1 changed files with 12 additions and 5 deletions

View File

@ -26,6 +26,8 @@ from oslo_db.sqlalchemy import enginefacade
from oslo_db.sqlalchemy import models
from oslo_log import log
from oslo_serialization import jsonutils
from osprofiler import opts as profiler
import osprofiler.sqlalchemy
import six
import sqlalchemy as sql
from sqlalchemy.ext import declarative
@ -73,6 +75,8 @@ def initialize():
db_options.set_defaults(
CONF,
connection="sqlite:///keystone.db")
# Configure OSprofiler options
profiler.set_defaults(CONF, enabled=False, trace_sqlalchemy=False)
def initialize_decorator(init):
@ -172,9 +176,6 @@ _main_context_manager = None
def _get_main_context_manager():
# TODO(DinaBelova): add DB profiling
# this requires oslo.db modification for proper format and functionality
# will be done in Newton timeframe
global _main_context_manager
if not _main_context_manager:
@ -213,7 +214,7 @@ def session_for_read():
reader = enginefacade.reader
else:
reader = _get_main_context_manager().reader
return reader.using(_get_context())
return _wrap_session(reader.using(_get_context()))
def session_for_write():
@ -221,7 +222,13 @@ def session_for_write():
writer = enginefacade.writer
else:
writer = _get_main_context_manager().writer
return writer.using(_get_context())
return _wrap_session(writer.using(_get_context()))
def _wrap_session(sess):
if CONF.profiler.enabled and CONF.profiler.trace_sqlalchemy:
sess = osprofiler.sqlalchemy.wrap_session(sql, sess)
return sess
def truncated(f):