Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/50602


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, 11 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/EventLogging 
refs/changes/02/50602/1

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..3ad32bc 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
 
 
@@ -170,7 +170,6 @@
     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: newchange
Gerrit-Change-Id: I1ea55df2d5948d9e8c16493943f7164c0c894b74
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/EventLogging
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <o...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to