long2ice/meilisync

Meilisync loses event when both create and update occur for the same primary key in an interval

rishabhc32 opened this issue · 2 comments

If I have an interval of, let's suppose, 10 seconds and insert size of 1000 documents, and within that interval, a create event is first received followed by an update event for the same primary key, the current implementation of Meilisync's event buffer leads to the create event being overwritten by the update event.

def add_event(self, sync: Sync, event: Event):
pk = event.data[sync.pk]
self._events.setdefault(sync, {})
self._events[sync][pk] = event

self._events[sync][pk] = event here the event will get overwritten.

A potential solution could involve modifying the event handling logic to append events rather than overwrite them, for instance:

self._events[sync][pk].append(event)

Or we could just do:

self._events[sync].append(event)