@@ -122,12 +122,12 @@ func (so *observer) waitRollbackMitigation(seqNo uint64) {
122122 }
123123}
124124
125- func (so * observer ) canForward (seqNo uint64 ) bool {
125+ func (so * observer ) canForward (seqNo uint64 , isControl bool ) bool {
126126 if ! so .config .RollbackMitigation .Disabled {
127127 so .waitRollbackMitigation (seqNo )
128128 }
129129
130- return ! so .needCatchup (seqNo )
130+ return isControl || ! so .needCatchup (seqNo )
131131}
132132
133133func (so * observer ) isBeforeSkipWindow (eventTime time.Time ) bool {
@@ -166,7 +166,7 @@ func (so *observer) sendOrSkip(args models.ListenerArgs) {
166166}
167167
168168func (so * observer ) SnapshotMarker (event models.DcpSnapshotMarker ) {
169- if ! so .canForward (event .StartSeqNo ) {
169+ if ! so .canForward (event .StartSeqNo , true ) {
170170 return
171171 }
172172
@@ -192,7 +192,7 @@ func (so *observer) IsInSnapshotMarker(seqNo uint64) bool {
192192}
193193
194194func (so * observer ) Mutation (event gocbcore.DcpMutation ) { //nolint:dupl
195- if ! so .canForward (event .SeqNo ) {
195+ if ! so .canForward (event .SeqNo , false ) {
196196 return
197197 }
198198
@@ -220,7 +220,7 @@ func (so *observer) Mutation(event gocbcore.DcpMutation) { //nolint:dupl
220220}
221221
222222func (so * observer ) Deletion (event gocbcore.DcpDeletion ) { //nolint:dupl
223- if ! so .canForward (event .SeqNo ) {
223+ if ! so .canForward (event .SeqNo , false ) {
224224 return
225225 }
226226
@@ -248,7 +248,7 @@ func (so *observer) Deletion(event gocbcore.DcpDeletion) { //nolint:dupl
248248}
249249
250250func (so * observer ) Expiration (event gocbcore.DcpExpiration ) { //nolint:dupl
251- if ! so .canForward (event .SeqNo ) {
251+ if ! so .canForward (event .SeqNo , false ) {
252252 return
253253 }
254254
@@ -288,7 +288,7 @@ func (so *observer) End(event models.DcpStreamEnd, err error) {
288288}
289289
290290func (so * observer ) CreateCollection (event gocbcore.DcpCollectionCreation ) {
291- if ! so .canForward (event .SeqNo ) {
291+ if ! so .canForward (event .SeqNo , false ) {
292292 return
293293 }
294294
@@ -308,7 +308,7 @@ func (so *observer) CreateCollection(event gocbcore.DcpCollectionCreation) {
308308}
309309
310310func (so * observer ) DeleteCollection (event gocbcore.DcpCollectionDeletion ) {
311- if ! so .canForward (event .SeqNo ) {
311+ if ! so .canForward (event .SeqNo , false ) {
312312 return
313313 }
314314
@@ -328,7 +328,7 @@ func (so *observer) DeleteCollection(event gocbcore.DcpCollectionDeletion) {
328328}
329329
330330func (so * observer ) FlushCollection (event gocbcore.DcpCollectionFlush ) {
331- if ! so .canForward (event .SeqNo ) {
331+ if ! so .canForward (event .SeqNo , false ) {
332332 return
333333 }
334334
@@ -348,7 +348,7 @@ func (so *observer) FlushCollection(event gocbcore.DcpCollectionFlush) {
348348}
349349
350350func (so * observer ) CreateScope (event gocbcore.DcpScopeCreation ) {
351- if ! so .canForward (event .SeqNo ) {
351+ if ! so .canForward (event .SeqNo , false ) {
352352 return
353353 }
354354
@@ -367,7 +367,7 @@ func (so *observer) CreateScope(event gocbcore.DcpScopeCreation) {
367367}
368368
369369func (so * observer ) DeleteScope (event gocbcore.DcpScopeDeletion ) {
370- if ! so .canForward (event .SeqNo ) {
370+ if ! so .canForward (event .SeqNo , false ) {
371371 return
372372 }
373373
@@ -386,7 +386,7 @@ func (so *observer) DeleteScope(event gocbcore.DcpScopeDeletion) {
386386}
387387
388388func (so * observer ) ModifyCollection (event gocbcore.DcpCollectionModification ) {
389- if ! so .canForward (event .SeqNo ) {
389+ if ! so .canForward (event .SeqNo , false ) {
390390 return
391391 }
392392
@@ -412,7 +412,7 @@ func (so *observer) OSOSnapshot(event gocbcore.DcpOSOSnapshot) {
412412}
413413
414414func (so * observer ) SeqNoAdvanced (advanced gocbcore.DcpSeqNoAdvanced ) {
415- if ! so .canForward (advanced .SeqNo ) {
415+ if ! so .canForward (advanced .SeqNo , true ) {
416416 return
417417 }
418418
0 commit comments