Hi Allard,
I’ve isolated what happens in EmbeddedEventStore for a single processor thread affected by the problem.
When I have 2 or more events:
…
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
TOKEN not updated - returned event at line 395
Returned Event: 38a9179f-69d3-416a-8e18-0456deb3743e (Tracking Token GapAwareTrackingToken{index=526485, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
LastToken updated at GapAwareTrackingToken{index=526486, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
Return event at line 383
Returned Event: 03945f7e-9c5f-4ea8-85e5-17a43a3dc550 (Tracking Token GapAwareTrackingToken{index=526486, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
LastToken updated at GapAwareTrackingToken{index=526487, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
Return event at line 383
Returned Event: 2db46854-351e-4d00-8610-19b63e2f6fe3 (Tracking Token GapAwareTrackingToken{index=526487, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
LastToken updated at GapAwareTrackingToken{index=526488, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
Return event at line 383
Returned Event: 97ab94e8-5d57-414c-977e-14d25f9c1864 (Tracking Token GapAwareTrackingToken{index=526488, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
LastToken updated at GapAwareTrackingToken{index=526489, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
Return event at line 383
Returned Event: 45cbfaec-49c5-4c51-96f8-b5edd053f2f8 (Tracking Token GapAwareTrackingToken{index=526489, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
…
When I have a single event
…
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
TOKEN not updated - returned event at line 395
Returned Event: 9b73fe58-5269-4d8c-acb4-f71e28ea2580 (Tracking Token GapAwareTrackingToken{index=526492, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
JpaEventStorageEngine.fetchTrackedEvents => Result size: 1. (lastToken = GapAwareTrackingToken{index=526491, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
LastToken updated at GapAwareTrackingToken{index=526492, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]}
Return event at line 383
Returned Event: 9b73fe58-5269-4d8c-acb4-f71e28ea2580 (Tracking Token GapAwareTrackingToken{index=526492, gaps=[526212, 526213, 526219, 526228, 526252, 526336, 526341, 526342, 526403, 526404, 526407, 526429]})
Called peekPrivateStream (allowSwitchToTailingConsumer = true)
Called peekPrivateStream (allowSwitchToTailingConsumer = false)
…
In this case the same event is returned twice.
I hope this can be helpful.
Thanks
s