Merge lp:~rogpeppe/mgo/eliminate-acquire-race into lp:mgo/v2
Proposed by
Roger Peppe
Status: | Rejected |
---|---|
Rejected by: | Gustavo Niemeyer |
Proposed branch: | lp:~rogpeppe/mgo/eliminate-acquire-race |
Merge into: | lp:mgo/v2 |
Diff against target: |
23 lines (+6/-4) 1 file modified
session.go (+6/-4) |
To merge this branch: | bzr merge lp:~rogpeppe/mgo/eliminate-acquire-race |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Gustavo Niemeyer | Pending | ||
Review via email: mp+157374@code.launchpad.net |
Description of the change
mgo: fix possible race
To post a comment you must log in.
Unmerged revisions
- 197. By Roger Peppe
-
eliminate the possibility of a race in session.
acquireSocket - 196. By Roger Peppe
-
bson: make NewObjectId thread safe
R=dfc, niemeyer
CC=
https://codereview. appspot. com/8306043
Reviewers: mp+157374_ code.launchpad. net,
Message:
Please take a look.
Description:
mgo: fix possible race
https:/ /code.launchpad .net/~rogpeppe/ mgo/eliminate- acquire- race/+merge/ 157374
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/8367044/
Affected files:
A [revision details]
M session.go
Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>
Index: session.go Acquire( ) Acquire( )
=== modified file 'session.go'
--- session.go 2013-03-27 00:33:51 +0000
+++ session.go 2013-04-05 14:05:14 +0000
@@ -2894,14 +2894,16 @@
// Read-only lock to check for previously reserved socket.
s.m.RLock()
if s.masterSocket != nil {
+ sock := s.masterSocket
+ sock.Acquire()
s.m.RUnlock()
- s.masterSocket.
- return s.masterSocket, nil
+ return sock, nil
}
if s.slaveSocket != nil && s.slaveOk && slaveOk {
+ sock := s.slaveSocket
+ sock.Acquire()
s.m.RUnlock()
- s.slaveSocket.
- return s.slaveSocket, nil
+ return sock, nil
}
s.m.RUnlock()