jenkins-bot has submitted this change and it was merged. Change subject: Shift responsibility for annotating events with UUID ......................................................................
Shift responsibility for annotating events with UUID It seemed a bit weird to defer calculation of UUID to the database layer. It should rather be included in the (presumably canonical) output of log2json. Change-Id: I1ea55df2d5948d9e8c16493943f7164c0c894b74 --- M server/bin/log2json M server/eventlogging/jrm.py M server/eventlogging/parse.py M server/tests/fixtures.py 4 files changed, 12 insertions(+), 8 deletions(-) Approvals: Ori.livneh: Looks good to me, approved jenkins-bot: Verified diff --git a/server/bin/log2json b/server/bin/log2json index 9805da6..f14e763 100755 --- a/server/bin/log2json +++ b/server/bin/log2json @@ -37,7 +37,7 @@ import jsonschema import zmq -from eventlogging import json, LogParser, validate, zmq_subscribe +from eventlogging import capsule_uuid, json, LogParser, validate, zmq_subscribe logging.basicConfig(level=logging.DEBUG, stream=sys.stderr) @@ -61,6 +61,7 @@ try: event = parser.parse(raw_event) validate(event) + event['uuid'] = capsule_uuid(event) except Exception: logging.exception('Unable to decode: %s', raw_event) else: diff --git a/server/eventlogging/jrm.py b/server/eventlogging/jrm.py index fe6c5d2..2cb02da 100644 --- a/server/eventlogging/jrm.py +++ b/server/eventlogging/jrm.py @@ -14,7 +14,7 @@ import sqlalchemy -from .schema import get_schema, capsule_uuid +from .schema import get_schema from .compat import items @@ -166,11 +166,10 @@ def store_event(meta, event): - """Store an event the database.""" + """Store an event in the database.""" scid = (event['schema'], event['revision']) table = get_table(meta, scid) event = flatten(event) - event['uuid'] = capsule_uuid(event) event = {k: v for k, v in items(event) if k not in NO_DB_PROPERTIES} return table.insert(values=event).execute() diff --git a/server/eventlogging/parse.py b/server/eventlogging/parse.py index ee48a13..b9200cf 100644 --- a/server/eventlogging/parse.py +++ b/server/eventlogging/parse.py @@ -87,10 +87,10 @@ #: A mapping of format specifiers to a tuple of (regexp, caster). format_specifiers = { '%h': (r'(?P<clientIp>\S+)', hash_value), - '%j': (r'(?P<event>\S+)', json.loads), + '%j': (r'(?P<capsule>\S+)', json.loads), '%l': (r'(?P<recvFrom>\S+)', str), '%n': (r'(?P<seqId>\d+)', int), - '%q': (r'(?P<event>\?\S+)', decode_qson), + '%q': (r'(?P<capsule>\?\S+)', decode_qson), '%t': (r'(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})', ncsa_to_epoch), } @@ -128,7 +128,7 @@ raise ValueError(self.re, line) keys = sorted(match.groupdict(), key=match.start) event = {k: f(match.group(k)) for f, k in zip(self.casters, keys)} - event.update(event.pop('event')) + event.update(event.pop('capsule')) return event def __repr__(self): diff --git a/server/tests/fixtures.py b/server/tests/fixtures.py index 17be66e..af7f280 100644 --- a/server/tests/fixtures.py +++ b/server/tests/fixtures.py @@ -60,6 +60,9 @@ 'type': 'number', 'required': True, 'format': 'utc-millisec' + }, + 'uuid': { + 'type': 'string' } }, 'additionalProperties': False @@ -106,7 +109,8 @@ 'recvFrom': 'fenari', 'clientValidated': True, 'revision': 123, - 'schema': 'TestSchema' + 'schema': 'TestSchema', + 'uuid': 'babb66f34a0a5de3be0c6513088be33e' } -- To view, visit https://gerrit.wikimedia.org/r/50602 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1ea55df2d5948d9e8c16493943f7164c0c894b74 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/EventLogging Gerrit-Branch: master Gerrit-Owner: Ori.livneh <o...@wikimedia.org> Gerrit-Reviewer: Ori.livneh <o...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits