summaryrefslogtreecommitdiff
path: root/ceilometer/event
diff options
context:
space:
mode:
authorgordon chung <gord@live.ca>2015-10-21 08:44:58 -0400
committergordon chung <gord@live.ca>2015-10-21 08:44:58 -0400
commit898cd3d036c4358aa16f7b3e2028365dc9829213 (patch)
treec57c69b463f42a6713bdd5f9af825608572ab534 /ceilometer/event
parent15f44c6946753c3f11c27640cb991c8f806f726f (diff)
downloadceilometer-898cd3d036c4358aa16f7b3e2028365dc9829213.tar.gz
avoid using isolation level
depending on sql driver, REPEATABLE READ isolation level may lock an entire table and cause write timeouts. isolation level was set originally to ensure consistent reads between 2 queries required to build events. that said, we can avoid table locks by making assumption that the 1st query is the correct base and any difference given by 2nd query can be discarded. Change-Id: Ic53e1addf38a4d5934b4e627c4c974c6db42517e Closes-Bug: #1506717
Diffstat (limited to 'ceilometer/event')
-rw-r--r--ceilometer/event/storage/impl_sqlalchemy.py15
1 files changed, 5 insertions, 10 deletions
diff --git a/ceilometer/event/storage/impl_sqlalchemy.py b/ceilometer/event/storage/impl_sqlalchemy.py
index dd737331..b8d31fa1 100644
--- a/ceilometer/event/storage/impl_sqlalchemy.py
+++ b/ceilometer/event/storage/impl_sqlalchemy.py
@@ -131,10 +131,6 @@ class Connection(base.Connection):
options = dict(cfg.CONF.database.items())
options['max_retries'] = 0
self._engine_facade = db_session.EngineFacade(url, **options)
- if self._engine_facade.get_engine().name == 'sqlite':
- self.isolation_level = 'SERIALIZABLE'
- else:
- self.isolation_level = 'REPEATABLE READ'
def upgrade(self):
# NOTE(gordc): to minimise memory, only import migration when needed
@@ -216,9 +212,6 @@ class Connection(base.Connection):
return
session = self._engine_facade.get_session()
with session.begin():
- session.connection(
- execution_options={'isolation_level': self.isolation_level})
-
# Build up the join conditions
event_join_conditions = [models.EventType.id ==
models.Event.event_type_id]
@@ -341,9 +334,11 @@ class Connection(base.Connection):
trait_model = api_models.Trait(key, dtype, val)
event_list[id_].append_trait(trait_model)
except KeyError:
- LOG.warning('Trait key: %(key)s, val: %(val)s, for event: '
- '%(event)s not valid.' %
- {'key': key, 'val': val, 'event': id_})
+ # NOTE(gordc): this is expected as we do not set REPEATABLE
+ # READ (bug 1506717). if query is run while recording new
+ # event data, trait query may return more data than event
+ # query. they can be safely discarded.
+ pass
return event_list.values()