Skip to content

Commit 3bbd4e7

Browse files
committedJan 24, 2025
fix: rollback catchup flow blocking snapshot events
1 parent 36ee24f commit 3bbd4e7

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed
 

‎couchbase/observer.go

+13-13
Original file line numberDiff line numberDiff line change
@@ -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

133133
func (so *observer) isBeforeSkipWindow(eventTime time.Time) bool {
@@ -166,7 +166,7 @@ func (so *observer) sendOrSkip(args models.ListenerArgs) {
166166
}
167167

168168
func (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

194194
func (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

222222
func (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

250250
func (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

290290
func (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

310310
func (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

330330
func (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

350350
func (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

369369
func (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

388388
func (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

414414
func (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

Comments
 (0)