Skip to content

Commit 628d9d8

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

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
@@ -400,7 +400,7 @@ func (c *Client) StartSession(opts ...*options.SessionOptions) (Session, error)
400400
coreOpts.Snapshot = sopts.Snapshot
401401
}
402402

403-
sess, err := session.NewClientSession(c.sessionPool, c.id, session.Explicit, coreOpts)
403+
sess, err := session.NewClientSession(c.sessionPool, c.id, coreOpts)
404404
if err != nil {
405405
return nil, replaceErrors(err)
406406
}
@@ -661,10 +661,7 @@ func (c *Client) ListDatabases(ctx context.Context, filter interface{}, opts ...
661661
return ListDatabasesResult{}, err
662662
}
663663
if sess == nil && c.sessionPool != nil {
664-
sess, err = session.NewClientSession(c.sessionPool, c.id, session.Implicit)
665-
if err != nil {
666-
return ListDatabasesResult{}, err
667-
}
664+
sess = session.NewImplicitClientSession(c.sessionPool, c.id)
668665
defer sess.EndSession()
669666
}
670667

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
@@ -306,7 +306,7 @@ func (c *Cursor) addFromBatch(sliceVal reflect.Value, elemType reflect.Type, bat
306306
}
307307

308308
func (c *Cursor) closeImplicitSession() {
309-
if c.clientSession != nil && c.clientSession.SessionType == session.Implicit {
309+
if c.clientSession != nil && c.clientSession.IsImplicit {
310310
c.clientSession.EndSession()
311311
}
312312
}

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)
@@ -265,11 +261,7 @@ func (db *Database) Drop(ctx context.Context) error {
265261

266262
sess := sessionFromContext(ctx)
267263
if sess == nil && db.client.sessionPool != nil {
268-
var err error
269-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
270-
if err != nil {
271-
return err
272-
}
264+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
273265
defer sess.EndSession()
274266
}
275267

@@ -366,10 +358,7 @@ func (db *Database) ListCollections(ctx context.Context, filter interface{}, opt
366358

367359
sess := sessionFromContext(ctx)
368360
if sess == nil && db.client.sessionPool != nil {
369-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
370-
if err != nil {
371-
return nil, err
372-
}
361+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
373362
}
374363

375364
err = db.client.validSession(sess)
@@ -779,11 +768,7 @@ func (db *Database) CreateView(ctx context.Context, viewName, viewOn string, pip
779768
func (db *Database) executeCreateOperation(ctx context.Context, op *operation.Create) error {
780769
sess := sessionFromContext(ctx)
781770
if sess == nil && db.client.sessionPool != nil {
782-
var err error
783-
sess, err = session.NewClientSession(db.client.sessionPool, db.client.id, session.Implicit)
784-
if err != nil {
785-
return err
786-
}
771+
sess = session.NewImplicitClientSession(db.client.sessionPool, db.client.id)
787772
defer sess.EndSession()
788773
}
789774

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)