Skip to content

Commit 9944eff

Browse files
GODRIVER-2497 Always set causalConsistency=false for implicit sessions. (#1176)
Co-authored-by: Preston Vasquez <[email protected]>
1 parent 4d68f59 commit 9944eff

13 files changed

+708
-129
lines changed

mongo/change_stream.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,7 @@ func newChangeStream(ctx context.Context, config changeStreamConfig, pipeline in
119119

120120
cs.sess = sessionFromContext(ctx)
121121
if cs.sess == nil && cs.client.sessionPool != nil {
122-
cs.sess, cs.err = session.NewClientSession(cs.client.sessionPool, cs.client.id, session.Implicit)
123-
if cs.err != nil {
124-
return nil, cs.Err()
125-
}
122+
cs.sess = session.NewImplicitClientSession(cs.client.sessionPool, cs.client.id)
126123
}
127124
if cs.err = cs.client.validSession(cs.sess); cs.err != nil {
128125
closeImplicitSession(cs.sess)

mongo/client.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ func (c *Client) StartSession(opts ...*options.SessionOptions) (Session, error)
387387
coreOpts.Snapshot = sopts.Snapshot
388388
}
389389

390-
sess, err := session.NewClientSession(c.sessionPool, c.id, session.Explicit, coreOpts)
390+
sess, err := session.NewClientSession(c.sessionPool, c.id, coreOpts)
391391
if err != nil {
392392
return nil, replaceErrors(err)
393393
}
@@ -648,10 +648,7 @@ func (c *Client) ListDatabases(ctx context.Context, filter interface{}, opts ...
648648
return ListDatabasesResult{}, err
649649
}
650650
if sess == nil && c.sessionPool != nil {
651-
sess, err = session.NewClientSession(c.sessionPool, c.id, session.Implicit)
652-
if err != nil {
653-
return ListDatabasesResult{}, err
654-
}
651+
sess = session.NewImplicitClientSession(c.sessionPool, c.id)
655652
defer sess.EndSession()
656653
}
657654

mongo/collection.go

Lines changed: 12 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ type aggregateParams struct {
5959
}
6060

6161
func closeImplicitSession(sess *session.Client) {
62-
if sess != nil && sess.SessionType == session.Implicit {
62+
if sess != nil && sess.IsImplicit {
6363
sess.EndSession()
6464
}
6565
}
@@ -187,11 +187,7 @@ func (coll *Collection) BulkWrite(ctx context.Context, models []WriteModel,
187187

188188
sess := sessionFromContext(ctx)
189189
if sess == nil && coll.client.sessionPool != nil {
190-
var err error
191-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
192-
if err != nil {
193-
return nil, err
194-
}
190+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
195191
defer sess.EndSession()
196192
}
197193

@@ -255,11 +251,7 @@ func (coll *Collection) insert(ctx context.Context, documents []interface{},
255251

256252
sess := sessionFromContext(ctx)
257253
if sess == nil && coll.client.sessionPool != nil {
258-
var err error
259-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
260-
if err != nil {
261-
return nil, err
262-
}
254+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
263255
defer sess.EndSession()
264256
}
265257

@@ -415,10 +407,7 @@ func (coll *Collection) delete(ctx context.Context, filter interface{}, deleteOn
415407

416408
sess := sessionFromContext(ctx)
417409
if sess == nil && coll.client.sessionPool != nil {
418-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
419-
if err != nil {
420-
return nil, err
421-
}
410+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
422411
defer sess.EndSession()
423412
}
424413

@@ -546,11 +535,7 @@ func (coll *Collection) updateOrReplace(ctx context.Context, filter bsoncore.Doc
546535

547536
sess := sessionFromContext(ctx)
548537
if sess == nil && coll.client.sessionPool != nil {
549-
var err error
550-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
551-
if err != nil {
552-
return nil, err
553-
}
538+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
554539
defer sess.EndSession()
555540
}
556541

@@ -801,10 +786,7 @@ func aggregate(a aggregateParams) (cur *Cursor, err error) {
801786
}
802787
}()
803788
if sess == nil && a.client.sessionPool != nil {
804-
sess, err = session.NewClientSession(a.client.sessionPool, a.client.id, session.Implicit)
805-
if err != nil {
806-
return nil, err
807-
}
789+
sess = session.NewImplicitClientSession(a.client.sessionPool, a.client.id)
808790
}
809791
if err = a.client.validSession(sess); err != nil {
810792
return nil, err
@@ -950,10 +932,7 @@ func (coll *Collection) CountDocuments(ctx context.Context, filter interface{},
950932

951933
sess := sessionFromContext(ctx)
952934
if sess == nil && coll.client.sessionPool != nil {
953-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
954-
if err != nil {
955-
return 0, err
956-
}
935+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
957936
defer sess.EndSession()
958937
}
959938
if err = coll.client.validSession(sess); err != nil {
@@ -1030,10 +1009,7 @@ func (coll *Collection) EstimatedDocumentCount(ctx context.Context,
10301009

10311010
var err error
10321011
if sess == nil && coll.client.sessionPool != nil {
1033-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
1034-
if err != nil {
1035-
return 0, err
1036-
}
1012+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
10371013
defer sess.EndSession()
10381014
}
10391015

@@ -1099,10 +1075,7 @@ func (coll *Collection) Distinct(ctx context.Context, fieldName string, filter i
10991075
sess := sessionFromContext(ctx)
11001076

11011077
if sess == nil && coll.client.sessionPool != nil {
1102-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
1103-
if err != nil {
1104-
return nil, err
1105-
}
1078+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
11061079
defer sess.EndSession()
11071080
}
11081081

@@ -1198,11 +1171,7 @@ func (coll *Collection) Find(ctx context.Context, filter interface{},
11981171
}
11991172
}()
12001173
if sess == nil && coll.client.sessionPool != nil {
1201-
var err error
1202-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
1203-
if err != nil {
1204-
return nil, err
1205-
}
1174+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
12061175
}
12071176

12081177
err = coll.client.validSession(sess)
@@ -1404,10 +1373,7 @@ func (coll *Collection) findAndModify(ctx context.Context, op *operation.FindAnd
14041373
sess := sessionFromContext(ctx)
14051374
var err error
14061375
if sess == nil && coll.client.sessionPool != nil {
1407-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
1408-
if err != nil {
1409-
return &SingleResult{err: err}
1410-
}
1376+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
14111377
defer sess.EndSession()
14121378
}
14131379

@@ -1797,11 +1763,7 @@ func (coll *Collection) drop(ctx context.Context) error {
17971763

17981764
sess := sessionFromContext(ctx)
17991765
if sess == nil && coll.client.sessionPool != nil {
1800-
var err error
1801-
sess, err = session.NewClientSession(coll.client.sessionPool, coll.client.id, session.Implicit)
1802-
if err != nil {
1803-
return err
1804-
}
1766+
sess = session.NewImplicitClientSession(coll.client.sessionPool, coll.client.id)
18051767
defer sess.EndSession()
18061768
}
18071769

mongo/cursor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ func (c *Cursor) addFromBatch(sliceVal reflect.Value, elemType reflect.Type, bat
309309
}
310310

311311
func (c *Cursor) closeImplicitSession() {
312-
if c.clientSession != nil && c.clientSession.SessionType == session.Implicit {
312+
if c.clientSession != nil && c.clientSession.IsImplicit {
313313
c.clientSession.EndSession()
314314
}
315315
}

mongo/database.go

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,7 @@ func (db *Database) processRunCommand(ctx context.Context, cmd interface{},
136136
cursorCommand bool, opts ...*options.RunCmdOptions) (*operation.Command, *session.Client, error) {
137137
sess := sessionFromContext(ctx)
138138
if sess == nil && db.client.sessionPool != nil {
139-
var err error
140-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
141-
if err != nil {
142-
return nil, sess, err
143-
}
139+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
144140
}
145141

146142
err := db.client.validSession(sess)
@@ -261,11 +257,7 @@ func (db *Database) Drop(ctx context.Context) error {
261257

262258
sess := sessionFromContext(ctx)
263259
if sess == nil && db.client.sessionPool != nil {
264-
var err error
265-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
266-
if err != nil {
267-
return err
268-
}
260+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
269261
defer sess.EndSession()
270262
}
271263

@@ -362,10 +354,7 @@ func (db *Database) ListCollections(ctx context.Context, filter interface{}, opt
362354

363355
sess := sessionFromContext(ctx)
364356
if sess == nil && db.client.sessionPool != nil {
365-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
366-
if err != nil {
367-
return nil, err
368-
}
357+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
369358
}
370359

371360
err = db.client.validSession(sess)
@@ -775,11 +764,7 @@ func (db *Database) CreateView(ctx context.Context, viewName, viewOn string, pip
775764
func (db *Database) executeCreateOperation(ctx context.Context, op *operation.Create) error {
776765
sess := sessionFromContext(ctx)
777766
if sess == nil && db.client.sessionPool != nil {
778-
var err error
779-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
780-
if err != nil {
781-
return err
782-
}
767+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
783768
defer sess.EndSession()
784769
}
785770

mongo/index_view.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,7 @@ func (iv IndexView) List(ctx context.Context, opts ...*options.ListIndexesOption
7272

7373
sess := sessionFromContext(ctx)
7474
if sess == nil && iv.coll.client.sessionPool != nil {
75-
var err error
76-
sess, err = session.NewClientSession(iv.coll.client.sessionPool, iv.coll.client.id, session.Implicit)
77-
if err != nil {
78-
return nil, err
79-
}
75+
sess = session.NewImplicitClientSession(iv.coll.client.sessionPool, iv.coll.client.id)
8076
}
8177

8278
err := iv.coll.client.validSession(sess)
@@ -227,10 +223,7 @@ func (iv IndexView) CreateMany(ctx context.Context, models []IndexModel, opts ..
227223
sess := sessionFromContext(ctx)
228224

229225
if sess == nil && iv.coll.client.sessionPool != nil {
230-
sess, err = session.NewClientSession(iv.coll.client.sessionPool, iv.coll.client.id, session.Implicit)
231-
if err != nil {
232-
return nil, err
233-
}
226+
sess = session.NewImplicitClientSession(iv.coll.client.sessionPool, iv.coll.client.id)
234227
defer sess.EndSession()
235228
}
236229

@@ -367,11 +360,7 @@ func (iv IndexView) drop(ctx context.Context, name string, opts ...*options.Drop
367360

368361
sess := sessionFromContext(ctx)
369362
if sess == nil && iv.coll.client.sessionPool != nil {
370-
var err error
371-
sess, err = session.NewClientSession(iv.coll.client.sessionPool, iv.coll.client.id, session.Implicit)
372-
if err != nil {
373-
return nil, err
374-
}
363+
sess = session.NewImplicitClientSession(iv.coll.client.sessionPool, iv.coll.client.id)
375364
defer sess.EndSession()
376365
}
377366

0 commit comments

Comments
 (0)