12447: Fix typo shadowing 'data' in BlockCache.Get
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 16 Oct 2017 14:41:18 +0000 (10:41 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 16 Oct 2017 14:41:18 +0000 (10:41 -0400)
Move locking to BlockCache.setup()

Tweak tests to bind explicitly to loopback address.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

sdk/go/keepclient/block_cache.go
sdk/go/keepclient/keepclient_test.go

index 1849fa2ce3f15f0387e000ceae4e07e14ca3eed7..5d8daad60d4be6dfad3a6f3c2003f759f2967956 100644 (file)
@@ -67,7 +67,7 @@ func (c *BlockCache) Get(kc *KeepClient, locator string) ([]byte, error) {
                        rdr, size, _, err := kc.Get(locator)
                        var data []byte
                        if err == nil {
-                               data := make([]byte, size, BLOCKSIZE)
+                               data = make([]byte, size, BLOCKSIZE)
                                _, err = io.ReadFull(rdr, data)
                                err2 := rdr.Close()
                                if err == nil {
@@ -94,13 +94,13 @@ func (c *BlockCache) Get(kc *KeepClient, locator string) ([]byte, error) {
 }
 
 func (c *BlockCache) setup() {
+       c.mtx.Lock()
        c.cache = make(map[string]*cacheBlock)
+       c.mtx.Unlock()
 }
 
 func (c *BlockCache) Clear() {
-       c.mtx.Lock()
        c.setup()
-       c.mtx.Unlock()
 }
 
 type timeSlice []time.Time
index e12db26770e6881088e8fec02228deb4153f17c0..3ce4e7425aa273e2753ddcaab516a86ecd34d59a 100644 (file)
@@ -111,7 +111,9 @@ func (sph StubPutHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request)
 
 func RunFakeKeepServer(st http.Handler) (ks KeepServer) {
        var err error
-       ks.listener, err = net.ListenTCP("tcp", &net.TCPAddr{Port: 0})
+       // If we don't explicitly bind it to localhost, ks.listener.Addr() will
+       // bind to 0.0.0.0 or [::] which is not a valid address for Dial()
+       ks.listener, err = net.ListenTCP("tcp", &net.TCPAddr{IP: []byte{127, 0, 0, 1}, Port: 0})
        if err != nil {
                panic(fmt.Sprintf("Could not listen on any port"))
        }