Skip to content

Commit c08cb0c

Browse files
authored
Fix panic when resume token load failed with a non-ErrNoDocuments error. (#178)
This also includes an additional (unrelated) error-wrapping in the retryer.
1 parent 8af63f5 commit c08cb0c

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

internal/verifier/change_reader.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,11 +207,15 @@ func (rc *ChangeReaderCommon) loadResumeToken(ctx context.Context) (option.Optio
207207
bson.D{{"_id", rc.resumeTokenDocID()}},
208208
).Raw()
209209

210-
if errors.Is(err, mongo.ErrNoDocuments) {
211-
return option.None[bson.Raw](), nil
210+
if err != nil {
211+
if errors.Is(err, mongo.ErrNoDocuments) {
212+
err = nil
213+
}
214+
215+
return option.None[bson.Raw](), err
212216
}
213217

214-
return option.Some(token), err
218+
return option.Some(token), nil
215219
}
216220

217221
func (rc *ChangeReaderCommon) updateLag(sess *mongo.Session, token bson.Raw) {

internal/verifier/change_stream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ func (csr *ChangeStreamReader) iterateChangeStream(
317317
err = csr.readAndHandleOneChangeEventBatch(ctx, ri, cs, sess)
318318

319319
if err != nil {
320-
return err
320+
return errors.Wrap(err, "finishing change stream after writes-off")
321321
}
322322
}
323323

0 commit comments

Comments
 (0)