Skip to content

Commit 41b93ce

Browse files
author
Divjot Arora
committed
Close implicit sessions if an error occurs for cursor commands.
Change-Id: Ic795ecbff2b8e97eafa617feca53cf86dcfd050d
1 parent 5004250 commit 41b93ce

File tree

5 files changed

+31
-4
lines changed

5 files changed

+31
-4
lines changed

x/mongo/driver/aggregate.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,10 @@ func Aggregate(
114114
cmd.Opts = append(cmd.Opts, hintElem)
115115
}
116116

117-
return cmd.RoundTrip(ctx, desc, ss, conn)
117+
c, err := cmd.RoundTrip(ctx, desc, ss, conn)
118+
if err != nil {
119+
closeImplicitSession(cmd.Session)
120+
}
121+
122+
return c, err
118123
}

x/mongo/driver/dispatch.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/mongodb/mongo-go-driver/bson"
1313
"github.com/mongodb/mongo-go-driver/bson/bsoncodec"
1414
"github.com/mongodb/mongo-go-driver/x/bsonx"
15+
"github.com/mongodb/mongo-go-driver/x/mongo/driver/session"
1516
)
1617

1718
// ErrCollation is caused if a collation is given for an invalid server version.
@@ -58,3 +59,9 @@ func interfaceToElement(key string, i interface{}, registry *bsoncodec.Registry)
5859
return bsonx.Elem{key, bsonx.Document(doc)}, nil
5960
}
6061
}
62+
63+
func closeImplicitSession(sess *session.Client) {
64+
if sess != nil && sess.SessionType == session.Implicit {
65+
sess.EndSession()
66+
}
67+
}

x/mongo/driver/find.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,10 @@ func Find(
159159
cmd.Opts = append(cmd.Opts, sortElem)
160160
}
161161

162-
return cmd.RoundTrip(ctx, desc, ss, conn)
162+
c, err := cmd.RoundTrip(ctx, desc, ss, conn)
163+
if err != nil {
164+
closeImplicitSession(cmd.Session)
165+
}
166+
167+
return c, err
163168
}

x/mongo/driver/list_collections.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,10 @@ func ListCollections(
6060
cmd.Opts = append(cmd.Opts, bsonx.Elem{"nameOnly", bsonx.Boolean(*lc.NameOnly)})
6161
}
6262

63-
return cmd.RoundTrip(ctx, ss.Description(), ss, conn)
63+
c, err := cmd.RoundTrip(ctx, ss.Description(), ss, conn)
64+
if err != nil {
65+
closeImplicitSession(cmd.Session)
66+
}
67+
68+
return c, err
6469
}

x/mongo/driver/list_indexes.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,10 @@ func ListIndexes(
6161
}
6262
}
6363

64-
return cmd.RoundTrip(ctx, ss.Description(), ss, conn)
64+
c, err := cmd.RoundTrip(ctx, ss.Description(), ss, conn)
65+
if err != nil {
66+
closeImplicitSession(cmd.Session)
67+
}
68+
69+
return c, err
6570
}

0 commit comments

Comments
 (0)