Incorporating code review comments (refs #2620)
authorTim Pierce <twp@curoverse.com>
Tue, 29 Apr 2014 19:24:03 +0000 (15:24 -0400)
committerTim Pierce <twp@curoverse.com>
Tue, 29 Apr 2014 19:24:03 +0000 (15:24 -0400)
* use filepath.Join to build file paths instead of fmt.Sprintf
* use ioutil.ReadAll to ensure that we read the whole file

services/keep/src/keep/volume_unix.go
services/keep/src/keep/volume_unix_test.go

index 95e0f4b0ebe0639d1529ce903e5fdd57b3fa8730..88410def8e6d55b5af68226a134708362e8d973f 100644 (file)
@@ -111,24 +111,22 @@ func (v *UnixVolume) Put(loc string, block []byte) error {
 func (v *UnixVolume) Read(loc string) ([]byte, error) {
        var f *os.File
        var err error
-       var nread int
+       var buf []byte
 
-       blockFilename := fmt.Sprintf("%s/%s/%s", v.root, loc[0:3], loc)
+       blockFilename := filepath.Join(v.root, loc[0:3], loc)
 
        f, err = os.Open(blockFilename)
        if err != nil {
                return nil, err
        }
 
-       var buf = make([]byte, BLOCKSIZE)
-       nread, err = f.Read(buf)
-       if err != nil {
+       if buf, err = ioutil.ReadAll(f); err != nil {
                log.Printf("%s: reading %s: %s\n", v, blockFilename, err)
                return buf, err
        }
 
        // Success!
-       return buf[:nread], nil
+       return buf, nil
 }
 
 // Write stores a block of data identified by the locator string
@@ -140,7 +138,7 @@ func (v *UnixVolume) Write(loc string, block []byte) error {
        if v.IsFull() {
                return FullError
        }
-       blockDir := fmt.Sprintf("%s/%s", v.root, loc[0:3])
+       blockDir := filepath.Join(v.root, loc[0:3])
        if err := os.MkdirAll(blockDir, 0755); err != nil {
                log.Printf("%s: could not create directory %s: %s",
                        loc, blockDir, err)
@@ -152,7 +150,7 @@ func (v *UnixVolume) Write(loc string, block []byte) error {
                log.Printf("ioutil.TempFile(%s, tmp%s): %s", blockDir, loc, tmperr)
                return tmperr
        }
-       blockFilename := fmt.Sprintf("%s/%s", blockDir, loc)
+       blockFilename := filepath.Join(blockDir, loc)
 
        if _, err := tmpfile.Write(block); err != nil {
                log.Printf("%s: writing to %s: %s\n", v, blockFilename, err)
index d1f1874b3aa72df40cfc177ba3a992bfc60afc32..278e656066a0adc2ec5d59bb1814c0f04776f00d 100644 (file)
@@ -158,7 +158,7 @@ func TestGetSerialized(t *testing.T) {
        }(sem)
 
        // Wait for all goroutines to finish
-       for done := 0; done < 2; {
+       for done := 0; done < 3; {
                done += <-sem
        }
 }