New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Seems like eventsByTag query misses events (at buffer's boundary). #55
Comments
I think you hit an edge case. The solution of setting the max-buffer-size seems reasonable. |
I did a fix and created pull request |
Just copy description from commit message: InMemoryReadJournal::eventsByTag::nextFromOffset uses unix timestamp to calculate 'next' event:
and it skips event B because both of them have same unix timestamp: 1534510989629, and 'next' uuid will be: The difference in nanoseconds: Where it comes from ?
If we will take a look on UUIDUtil.getCurrentTimestamp more closely, we can see following:
So if two (or more) events are persisted in same millisecond, nanoseconds will be added to timeuuid. But they are not PS: I also added the test for that scenario, unfortunately test is very depended on timing (performance) |
Hi,
I use Akka 2.5.14 and akka-persistence-inmemory 2.5.1.1, and seems like I fall into following issue:
I emit quite fast a lot of events (more that default max-buffer-size) and sometimes 101th, 202th and 303th events are not pushed into stream.
I tried to read code, and following place I consider as suspicious:
Let consider an example (real values from test, sorry I cannot share test yet):
100th event has TimeBasedUUID(fa7225e0-a223-11e8-b71e-e9435a127f49)
101th event has TimeBasedUUID(fa7225e1-a223-11e8-b71e-e9435a127f49)
According to my logs, my stream processing logic never got 101th event. If we run code from nextFromOffset:
So if currentEventsByTag returned 101 events, last one is dropped by take(100) and next offset returned to unfold will be fa724cf0-a223-11e8-8080-808080808080 which is after 101th event's timestamp.
If I set max-buffer-size to value above number of events my test can generate - everything works fine.
What you think about my thoughts?
The text was updated successfully, but these errors were encountered: