Ottomata has uploaded a new change for review.
https://gerrit.wikimedia.org/r/216895
Change subject: Write different EventError code for validation errors
......................................................................
Write different EventError code for validation errors
Now that errors are encapsulated in the EventError schema, we can
differentiate between validation and other types of processor errors.
This will help eventlogging maintainers tell if an event is not
being produced propertly because of a validation error, or because
of something more annoying, like data truncation.
Change-Id: Ia55906db7b6214e6d4b6c20477deb2979524cbe5
---
M server/bin/eventlogging-processor
1 file changed, 19 insertions(+), 10 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/EventLogging
refs/changes/95/216895/1
diff --git a/server/bin/eventlogging-processor
b/server/bin/eventlogging-processor
index 7148a00..983879a 100755
--- a/server/bin/eventlogging-processor
+++ b/server/bin/eventlogging-processor
@@ -40,6 +40,7 @@
get_reader, get_writer, validate, setup_logging,
uri_force_raw, uri_append_query_items)
+from jsonschema import ValidationError
setup_logging()
@@ -88,6 +89,14 @@
if args.sid:
args.input = uri_append_query_items(args.input, {'identity': args.sid})
+
+def write_event_error(writer, raw_event, error_message, error_code):
+ try:
+ event_error = create_event_error(raw_event, error_message, error_code)
+ except Exception as e:
+ logging.error('Unable to create EventError object: %s' % e.message)
+ writer.send(event_error)
+
for raw_event in get_reader(args.input):
try:
event = parser.parse(raw_event)
@@ -95,16 +104,16 @@
event.pop('isTruncated', None)
validate(event)
event['uuid'] = capsule_uuid(event)
- except Exception as e:
- logging.error('Unable to decode: %s (%s)', raw_event, e.message)
+
+ except ValidationError as e:
+ logging.error('Unable to validate: %s (%s)', raw_event, e.message)
if writer_invalid:
- try:
- writer_invalid.send(create_event_error(
- raw_event, e.message, 'processor'
- ))
- except Exception as error_e:
- logging.error(
- 'Unable to create error event: %s' % error_e.message
- )
+ write_event_error(writer_invalid, raw_event, e.message,
'validation')
+
+ except Exception as e:
+ logging.error('Unable to process: %s (%s)', raw_event, e.message)
+ if writer_invalid:
+ write_event_error(writer_invalid, raw_event, e.message,
'processor')
+
else:
writer.send(event)
--
To view, visit https://gerrit.wikimedia.org/r/216895
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia55906db7b6214e6d4b6c20477deb2979524cbe5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/EventLogging
Gerrit-Branch: master
Gerrit-Owner: Ottomata <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits