[ARVADOS] updated: 32899e6b4ca7b5d59e3136f44785d0971a3b19ee
Git user
git at public.curoverse.com
Wed May 18 13:39:14 EDT 2016
Summary of changes:
build/run-tests.sh | 2 +-
sdk/go/x/arvados/client.go | 27 ++++++++++++++---------
services/keep-balance/balance.go | 5 +++--
services/keep-balance/block_state.go | 6 +++---
services/keep-balance/integration_test.go | 9 +++++---
services/keep-balance/main_test.go | 36 +++++++++++++++----------------
6 files changed, 48 insertions(+), 37 deletions(-)
via 32899e6b4ca7b5d59e3136f44785d0971a3b19ee (commit)
via 952e778be341957d42278263bd008181ee0c5d21 (commit)
from 01aa17fb0f5de5a7e9a287e54ef15008d7af7260 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 32899e6b4ca7b5d59e3136f44785d0971a3b19ee
Author: Tom Clegg <tom at curoverse.com>
Date: Wed May 18 13:39:10 2016 -0400
9162: Fix race in arvados.Client
diff --git a/sdk/go/x/arvados/client.go b/sdk/go/x/arvados/client.go
index 16a12cb..3039919 100644
--- a/sdk/go/x/arvados/client.go
+++ b/sdk/go/x/arvados/client.go
@@ -12,12 +12,21 @@ import (
)
type Client struct {
- *http.Client
+ // HTTP client used to make requests. If nil,
+ // http.DefaultClient or InsecureHTTPClient will be used.
+ Client *http.Client
APIHost string
AuthToken string
- Insecure bool
+ // Accept unverified certificates. If a Client is provided by
+ // the caller, this has no effect.
+ Insecure bool
}
+var InsecureHTTPClient = &http.Client{
+ Transport: &http.Transport{
+ TLSClientConfig: &tls.Config{
+ InsecureSkipVerify: true}}}
+
// NewClientFromEnv creates a new Client that uses the service
// endpoint and credentials given by the ARVADOS_API_* environment
// variables.
@@ -118,15 +127,13 @@ func (c *Client) RequestAndDecode(dst interface{}, method, path string, body io.
}
func (c *Client) httpClient() *http.Client {
- client := c.Client
- if client == nil {
- client = http.DefaultClient
- }
- if c.Insecure {
- client.Transport = &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
+ if c.Client != nil {
+ return c.Client
+ } else if c.Insecure {
+ return InsecureHTTPClient
+ } else {
+ return http.DefaultClient
}
- return client
}
func (c *Client) apiURL(path string) string {
commit 952e778be341957d42278263bd008181ee0c5d21
Author: Tom Clegg <tom at curoverse.com>
Date: Wed May 18 13:01:43 2016 -0400
9162: Fix races, integration test teardown in -short
diff --git a/build/run-tests.sh b/build/run-tests.sh
index fbbedf6..b62bd09 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -501,7 +501,7 @@ do_test_once() {
then
# "go test -check.vv giturl" doesn't work, but this
# does:
- cd "$WORKSPACE/$1" && go test ${short:+-short} ${coverflags[@]} ${testargs[$1]}
+ cd "$WORKSPACE/$1" && go test ${short:+-short} ${testargs[$1]}
else
# The above form gets verbose even when testargs is
# empty, so use this form in such cases:
diff --git a/services/keep-balance/balance.go b/services/keep-balance/balance.go
index 3cff8e8..f45e346 100644
--- a/services/keep-balance/balance.go
+++ b/services/keep-balance/balance.go
@@ -424,13 +424,14 @@ func (bal *Balancer) commitAsync(c *arvados.Client, label string, f func(srv *Ke
errs := make(chan error)
for _, srv := range bal.KeepServices {
go func(srv *KeepService) {
+ var err error
+ defer func() { errs <- err }()
label := fmt.Sprintf("%s: %v", srv, label)
defer timeMe(bal.Logger, label)()
- err := f(srv)
+ err = f(srv)
if err != nil {
err = fmt.Errorf("%s: %v", label, err)
}
- errs <- err
}(srv)
}
var lastErr error
diff --git a/services/keep-balance/block_state.go b/services/keep-balance/block_state.go
index f8edec5..4cca976 100644
--- a/services/keep-balance/block_state.go
+++ b/services/keep-balance/block_state.go
@@ -40,7 +40,7 @@ func NewBlockStateMap() *BlockStateMap {
}
// Get returns a BlockState entry, allocating a new one if needed.
-func (bsm *BlockStateMap) Get(blkid arvados.SizedDigest) *BlockState {
+func (bsm *BlockStateMap) get(blkid arvados.SizedDigest) *BlockState {
// TODO? Allocate BlockState structs a slice at a time,
// instead of one at a time.
blk := bsm.entries[blkid]
@@ -68,7 +68,7 @@ func (bsm *BlockStateMap) AddReplicas(srv *KeepService, idx []arvados.KeepServic
defer bsm.mutex.Unlock()
for _, ent := range idx {
- bsm.Get(ent.SizedDigest).AddReplica(Replica{
+ bsm.get(ent.SizedDigest).AddReplica(Replica{
KeepService: srv,
Mtime: ent.Mtime,
})
@@ -82,6 +82,6 @@ func (bsm *BlockStateMap) IncreaseDesired(n int, blocks []arvados.SizedDigest) {
defer bsm.mutex.Unlock()
for _, blkid := range blocks {
- bsm.Get(blkid).IncreaseDesired(n)
+ bsm.get(blkid).IncreaseDesired(n)
}
}
diff --git a/services/keep-balance/integration_test.go b/services/keep-balance/integration_test.go
index a460f56..d2b2a2d 100644
--- a/services/keep-balance/integration_test.go
+++ b/services/keep-balance/integration_test.go
@@ -51,6 +51,9 @@ func (s *integrationSuite) putReplicas(c *check.C, data string, replicas int) {
}
func (s *integrationSuite) TearDownSuite(c *check.C) {
+ if testing.Short() {
+ c.Skip("-short")
+ }
arvadostest.StopKeep(4)
arvadostest.StopAPI()
}
@@ -67,13 +70,13 @@ func (s *integrationSuite) SetUpTest(c *check.C) {
}
func (s *integrationSuite) TestBalanceAPIFixtures(c *check.C) {
- var logBuf bytes.Buffer
+ var logBuf *bytes.Buffer
for iter := 0; iter < 20; iter++ {
- logBuf = bytes.Buffer{}
+ logBuf := &bytes.Buffer{}
opts := RunOptions{
CommitPulls: true,
CommitTrash: true,
- Logger: log.New(&logBuf, "", log.LstdFlags),
+ Logger: log.New(logBuf, "", log.LstdFlags),
}
_, err := Run(s.config, opts)
c.Check(err, check.IsNil)
diff --git a/services/keep-balance/main_test.go b/services/keep-balance/main_test.go
index d3051a5..d1d13c3 100644
--- a/services/keep-balance/main_test.go
+++ b/services/keep-balance/main_test.go
@@ -18,6 +18,24 @@ import (
var _ = check.Suite(&mainSuite{})
+type reqTracker struct {
+ reqs []http.Request
+ sync.Mutex
+}
+
+func (rt *reqTracker) Count() int {
+ rt.Lock()
+ defer rt.Unlock()
+ return len(rt.reqs)
+}
+
+func (rt *reqTracker) Add(req *http.Request) int {
+ rt.Lock()
+ defer rt.Unlock()
+ rt.reqs = append(rt.reqs, *req)
+ return len(rt.reqs)
+}
+
type stubServer struct {
mux *http.ServeMux
srv *httptest.Server
@@ -55,24 +73,6 @@ func (s *stubServer) stop() {
s.srv.Close()
}
-type reqTracker struct {
- reqs []http.Request
- sync.Mutex
-}
-
-func (rt *reqTracker) Count() int {
- rt.Lock()
- defer rt.Unlock()
- return len(rt.reqs)
-}
-
-func (rt *reqTracker) Add(req *http.Request) int {
- rt.Lock()
- defer rt.Unlock()
- rt.reqs = append(rt.reqs, *req)
- return len(rt.reqs)
-}
-
func (s *stubServer) serveStatic(path, data string) *reqTracker {
rt := &reqTracker{}
s.mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list