@@ -258,7 +258,7 @@ class EventsBySliceBacktrackingSpec
258
258
result1.cancel()
259
259
}
260
260
261
- " still make initial backtracking until ahead of start offset" in {
261
+ " still make initial backtracking until caught up to start offset, then skip backtracking " in {
262
262
val entityType = nextEntityType()
263
263
val pid1 = nextPersistenceId(entityType)
264
264
val slice = query.sliceForPersistenceId(pid1.id)
@@ -275,7 +275,11 @@ class EventsBySliceBacktrackingSpec
275
275
writeEvent(slice, pid, seqNr, startTime.plusMillis(n), s " e ${mod}- ${seqNr}" )
276
276
}
277
277
278
- (3 to 10 ).foreach { n =>
278
+ // will start query at next event
279
+ val startOffset = TimestampOffset (startTime.plusSeconds(23 ).plusMillis(1 ), Map .empty)
280
+
281
+ // go past switch-to-backtracking trigger of 3 * buffer size (of 10)
282
+ (3 to 30 ).foreach { n =>
279
283
writeEvent(slice, pid1, n, startTime.plusSeconds(20 + n).plusMillis(1 ), s " e1- $n" )
280
284
writeEvent(slice, pid2, n, startTime.plusSeconds(20 + n).plusMillis(2 ), s " e2- $n" )
281
285
}
@@ -298,15 +302,16 @@ class EventsBySliceBacktrackingSpec
298
302
env.offset
299
303
}
300
304
301
- val result1 = startQuery(TimestampOffset (startTime.plusSeconds( 20 ), Map .empty) )
305
+ val result1 = startQuery(startOffset )
302
306
// from backtracking
303
307
expect(result1.expectNext(), pid1, 1 , None )
304
308
expect(result1.expectNext(), pid2, 1 , None )
305
309
expect(result1.expectNext(), pid1, 2 , None )
306
310
expect(result1.expectNext(), pid2, 2 , None )
311
+ expect(result1.expectNext(), pid1, 3 , None ) // start offset
307
312
308
313
// from normal
309
- (3 to 10 ).foreach { n =>
314
+ (3 to 30 ).foreach { n =>
310
315
expect(result1.expectNext(), pid1, n, Some (s " e1- $n" ))
311
316
expect(result1.expectNext(), pid2, n, Some (s " e2- $n" ))
312
317
}
0 commit comments