Skip to content

Commit

Permalink
Merge pull request #462 from openedx/cag/duplicated-ids-2
Browse files Browse the repository at this point in the history
fix: do not send duplicated events in batch
  • Loading branch information
Ian2012 authored Oct 15, 2024
2 parents ba1c882 + 821a541 commit 9115267
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
5 changes: 5 additions & 0 deletions event_routing_backends/backends/events_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,13 @@ def bulk_send(self, events):
for events_for_route in event_routes.values():
prepared_events = []
host = None
ids = set()
for _, updated_event, host, _ in events_for_route:
if updated_event["id"] in ids:
logger.info(f"Found duplicated event {updated_event['id']}")
continue
prepared_events.append(updated_event)
ids.add(updated_event["id"])

if prepared_events: # pragma: no cover
self.dispatch_bulk_events(
Expand Down
17 changes: 17 additions & 0 deletions event_routing_backends/backends/tests/test_events_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ def setUp(self):
}

self.transformed_event = {
'id': 'some-random-uuid',
'name': str(sentinel.name),
'transformed': True,
'event_time': '2020-01-01T12:12:12.000000+00:00',
Expand Down Expand Up @@ -126,6 +127,7 @@ def setUp(self):

self.bulk_transformed_events = [
{
'id': 'some-uuid-1',
'name': str(sentinel.name),
'transformed': True,
'event_time': '2020-01-01T12:12:12.000000+00:00',
Expand All @@ -134,6 +136,7 @@ def setUp(self):
},
},
{
'id': 'some-uuid-2',
'name': str(sentinel.name),
'transformed': True,
'event_time': '2020-01-01T12:12:12.000000+00:01',
Expand All @@ -142,6 +145,16 @@ def setUp(self):
},
},
{
'id': 'some-uuid-3',
'name': str(sentinel.name),
'transformed': True,
'event_time': '2020-01-01T12:12:12.000000+00:02',
'data': {
'key': 'value 2'
},
},
{
'id': 'some-uuid-3',
'name': str(sentinel.name),
'transformed': True,
'event_time': '2020-01-01T12:12:12.000000+00:02',
Expand Down Expand Up @@ -841,6 +854,8 @@ def test_successful_routing_of_bulk_events(
router.bulk_send(self.bulk_transformed_events)

overridden_events = self.bulk_transformed_events.copy()
# Remove duplicated events from expected call
overridden_events.pop()

for event in overridden_events:
event['new_key'] = 'new_value'
Expand Down Expand Up @@ -1145,6 +1160,8 @@ def test_successful_routing_of_bulk_events(
router.bulk_send(self.bulk_transformed_events)

overridden_events = self.bulk_transformed_events.copy()
# Remove duplicated events from expected call
overridden_events.pop()

for event in overridden_events:
event['new_key'] = 'new_value'
Expand Down

0 comments on commit 9115267

Please sign in to comment.