Skip to content

Commit a7eb0f4

Browse files
committed
Ensure proper batches are retried properly
GODRIVER-871 Change-Id: I7608168346b7bbfe5a8d3620c9a500178d6628ee
1 parent 0e82629 commit a7eb0f4

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

x/mongo/driver/bulk_write.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -233,20 +233,20 @@ func runInsert(
233233
if cmd.Session != nil {
234234
cmd.Session.RetryWrite = false
235235
}
236-
return insert(ctx, cmd, ss, nil)
236+
return insert(ctx, &cmd, ss, nil)
237237
}
238238

239239
cmd.Session.RetryWrite = retryWrite
240240
cmd.Session.IncrementTxnNumber()
241241

242-
res, origErr := insert(ctx, cmd, ss, nil)
242+
res, origErr := insert(ctx, &cmd, ss, nil)
243243
if shouldRetry(origErr, res.WriteConcernError) {
244244
newServer, err := topo.SelectServer(ctx, selector)
245245
if err != nil || !retrySupported(topo, ss.Description(), cmd.Session, cmd.WriteConcern) {
246246
return res, origErr
247247
}
248248

249-
return insert(ctx, cmd, newServer, origErr)
249+
return insert(ctx, &cmd, newServer, origErr)
250250
}
251251

252252
return res, origErr
@@ -300,20 +300,20 @@ func runDelete(
300300
if cmd.Session != nil {
301301
cmd.Session.RetryWrite = false
302302
}
303-
return delete(ctx, cmd, ss, nil)
303+
return delete(ctx, &cmd, ss, nil)
304304
}
305305

306306
cmd.Session.RetryWrite = retryWrite
307307
cmd.Session.IncrementTxnNumber()
308308

309-
res, origErr := delete(ctx, cmd, ss, nil)
309+
res, origErr := delete(ctx, &cmd, ss, nil)
310310
if shouldRetry(origErr, res.WriteConcernError) {
311311
newServer, err := topo.SelectServer(ctx, selector)
312312
if err != nil || !retrySupported(topo, ss.Description(), cmd.Session, cmd.WriteConcern) {
313313
return res, origErr
314314
}
315315

316-
return delete(ctx, cmd, newServer, origErr)
316+
return delete(ctx, &cmd, newServer, origErr)
317317
}
318318

319319
return res, origErr
@@ -376,20 +376,20 @@ func runUpdate(
376376
if cmd.Session != nil {
377377
cmd.Session.RetryWrite = false
378378
}
379-
return update(ctx, cmd, ss, nil)
379+
return update(ctx, &cmd, ss, nil)
380380
}
381381

382382
cmd.Session.RetryWrite = retryWrite
383383
cmd.Session.IncrementTxnNumber()
384384

385-
res, origErr := update(ctx, cmd, ss, nil)
385+
res, origErr := update(ctx, &cmd, ss, nil)
386386
if shouldRetry(origErr, res.WriteConcernError) {
387387
newServer, err := topo.SelectServer(ctx, selector)
388388
if err != nil || !retrySupported(topo, ss.Description(), cmd.Session, cmd.WriteConcern) {
389389
return res, origErr
390390
}
391391

392-
return update(ctx, cmd, newServer, origErr)
392+
return update(ctx, &cmd, newServer, origErr)
393393
}
394394

395395
return res, origErr

x/mongo/driver/delete.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ func Delete(
6565
if cmd.Session != nil {
6666
cmd.Session.RetryWrite = false // explicitly set to false to prevent encoding transaction number
6767
}
68-
return delete(ctx, cmd, ss, nil)
68+
return delete(ctx, &cmd, ss, nil)
6969
}
7070

7171
cmd.Session.RetryWrite = retryWrite
7272
cmd.Session.IncrementTxnNumber()
7373

74-
res, originalErr := delete(ctx, cmd, ss, nil)
74+
res, originalErr := delete(ctx, &cmd, ss, nil)
7575

7676
// Retry if appropriate
7777
if cerr, ok := originalErr.(command.Error); (ok && cerr.Retryable()) ||
@@ -83,14 +83,14 @@ func Delete(
8383
return res, originalErr
8484
}
8585

86-
return delete(ctx, cmd, ss, cerr)
86+
return delete(ctx, &cmd, ss, cerr)
8787
}
8888
return res, originalErr
8989
}
9090

9191
func delete(
9292
ctx context.Context,
93-
cmd command.Delete,
93+
cmd *command.Delete,
9494
ss *topology.SelectedServer,
9595
oldErr error,
9696
) (result.Delete, error) {

x/mongo/driver/insert.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ func Insert(
6262
if cmd.Session != nil {
6363
cmd.Session.RetryWrite = false // explicitly set to false to prevent encoding transaction number
6464
}
65-
return insert(ctx, cmd, ss, nil)
65+
return insert(ctx, &cmd, ss, nil)
6666
}
6767

6868
// TODO figure out best place to put retry write. Command shouldn't have to know about this field.
6969
cmd.Session.RetryWrite = retryWrite
7070
cmd.Session.IncrementTxnNumber()
7171

72-
res, originalErr := insert(ctx, cmd, ss, nil)
72+
res, originalErr := insert(ctx, &cmd, ss, nil)
7373

7474
// Retry if appropriate
7575
if cerr, ok := originalErr.(command.Error); (ok && cerr.Retryable()) ||
@@ -81,15 +81,15 @@ func Insert(
8181
return res, originalErr
8282
}
8383

84-
return insert(ctx, cmd, ss, cerr)
84+
return insert(ctx, &cmd, ss, cerr)
8585
}
8686

8787
return res, originalErr
8888
}
8989

9090
func insert(
9191
ctx context.Context,
92-
cmd command.Insert,
92+
cmd *command.Insert,
9393
ss *topology.SelectedServer,
9494
oldErr error,
9595
) (result.Insert, error) {

x/mongo/driver/update.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ func Update(
9090
if cmd.Session != nil {
9191
cmd.Session.RetryWrite = false // explicitly set to false to prevent encoding transaction number
9292
}
93-
return update(ctx, cmd, ss, nil)
93+
return update(ctx, &cmd, ss, nil)
9494
}
9595

9696
cmd.Session.RetryWrite = retryWrite
9797
cmd.Session.IncrementTxnNumber()
9898

99-
res, originalErr := update(ctx, cmd, ss, nil)
99+
res, originalErr := update(ctx, &cmd, ss, nil)
100100

101101
// Retry if appropriate
102102
if cerr, ok := originalErr.(command.Error); (ok && cerr.Retryable()) ||
@@ -108,15 +108,15 @@ func Update(
108108
return res, originalErr
109109
}
110110

111-
return update(ctx, cmd, ss, cerr)
111+
return update(ctx, &cmd, ss, cerr)
112112
}
113113
return res, originalErr
114114

115115
}
116116

117117
func update(
118118
ctx context.Context,
119-
cmd command.Update,
119+
cmd *command.Update,
120120
ss *topology.SelectedServer,
121121
oldErr error,
122122
) (result.Update, error) {

0 commit comments

Comments
 (0)