Merge lp:~dave-cheney/goose/tip into lp:goose
Proposed by
Dave Cheney
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Dave Cheney | ||||
Approved revision: | 128 | ||||
Merged at revision: | 127 | ||||
Proposed branch: | lp:~dave-cheney/goose/tip | ||||
Merge into: | lp:goose | ||||
Diff against target: |
89 lines (+17/-0) 1 file modified
testservices/swiftservice/service.go (+17/-0) |
||||
To merge this branch: | bzr merge lp:~dave-cheney/goose/tip | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Engineering | Pending | ||
Review via email: mp+225257@code.launchpad.net |
Commit message
testing: fix data race in swift mock
Description of the change
testing: fix data race in swift mock
To post a comment you must log in.
Reviewers: mp+225257_ code.launchpad. net,
Message:
Please take a look.
Description:
testing: fix data race in swift mock
https:/ /code.launchpad .net/~dave- cheney/ goose/tip/ +merge/ 225257
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/108380043/
Affected files (+19, -0 lines): swiftservice/ service. go
A [revision details]
M testservices/
Index: [revision details] 20140613065325- tlt6r3jg7saby4u b
=== 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: tarmac-
+New revision: <email address hidden>
Index: testservices/ swiftservice/ service. go swiftservice/ service. go' swiftservice/ service. go 2013-09-04 09:50:54 +0000 swiftservice/ service. go 2014-07-02 05:34:48 +0000
=== modified file 'testservices/
--- testservices/
+++ testservices/
@@ -10,6 +10,7 @@
"net/url"
"sort"
"strings"
+ "sync"
"time"
)
@@ -20,6 +21,8 @@
type Swift struct { .ServiceInstanc e
testservices
+
+ mu sync.Mutex // protects the remaining fields
containers map[string]object
}
@@ -70,7 +73,9 @@
// HasContainer verifies the given container exists or not.
func (s *Swift) HasContainer(name string) bool {
+ s.mu.Lock()
_, ok := s.containers[name]
+ s.mu.Unlock()
return ok
}
@@ -80,7 +85,9 @@ onHook( s, container, name); err != nil { container] [name] name) { "container already exists %q", name) [name] = make(object)
if err := s.ProcessFuncti
return nil, err
}
+ s.mu.Lock()
data, ok := s.containers[
+ s.mu.Unlock()
if !ok {
return nil, fmt.Errorf("no such object %q in container %q", name,
container)
}
@@ -96,7 +103,9 @@
if s.HasContainer(
return fmt.Errorf(
}
+ s.mu.Lock()
s.containers
+ s.mu.Unlock()
return nil
}
@@ -110,7 +119,9 @@ name); !ok { [container] [name] = data
if ok := s.HasContainer(
return nil, fmt.Errorf("no such container %q", name)
}
+ s.mu.Lock()
items := s.containers[name]
+ s.mu.Unlock()
sorted := make([]string, 0, len(items))
prefix := params["prefix"]
for filename := range items {
@@ -154,7 +165,9 @@
return err
}
}
+ s.mu.Lock()
s.containers
+ s.mu.Unlock()
return nil
}
@@ -166,7 +179,9 @@ name); !ok { s.containers, name)
if ok := s.HasContainer(
return fmt.Errorf("no such container %q", name)
}
+ s.mu.Lock()
delete(
+ s.mu.Unlock()
return nil
}
@@ -178,7 +193,9 @@ container, name); err != nil { s.containers[ container] , name)
if _, err := s.GetObject(
return err
}
+ s.mu.Lock()
delete(
+ s.mu.Unlock()
return nil
}