projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
8876: success? includes Canceled as well.
[arvados.git]
/
services
/
keepstore
/
s3_volume.go
diff --git
a/services/keepstore/s3_volume.go
b/services/keepstore/s3_volume.go
index 79a680d58a3efebab11467ca2f3a474d2e0d0feb..80a7c89f2ed4f6669566711c40c4d0a59940e439 100644
(file)
--- a/
services/keepstore/s3_volume.go
+++ b/
services/keepstore/s3_volume.go
@@
-10,6
+10,7
@@
import (
"net/http"
"os"
"regexp"
"net/http"
"os"
"regexp"
+ "strings"
"time"
"github.com/AdRoll/goamz/aws"
"time"
"github.com/AdRoll/goamz/aws"
@@
-153,20
+154,18
@@
func (v *S3Volume) Check() error {
return nil
}
return nil
}
-func (v *S3Volume) Get(loc string
) ([]byte
, error) {
+func (v *S3Volume) Get(loc string
, buf []byte) (int
, error) {
rdr, err := v.Bucket.GetReader(loc)
if err != nil {
rdr, err := v.Bucket.GetReader(loc)
if err != nil {
- return
nil
, v.translateError(err)
+ return
0
, v.translateError(err)
}
defer rdr.Close()
}
defer rdr.Close()
- buf := bufs.Get(BlockSize)
n, err := io.ReadFull(rdr, buf)
switch err {
case nil, io.EOF, io.ErrUnexpectedEOF:
n, err := io.ReadFull(rdr, buf)
switch err {
case nil, io.EOF, io.ErrUnexpectedEOF:
- return
buf[:n]
, nil
+ return
n
, nil
default:
default:
- bufs.Put(buf)
- return nil, v.translateError(err)
+ return 0, v.translateError(err)
}
}
}
}
@@
-312,7
+311,8
@@
func (v *S3Volume) isKeepBlock(s string) bool {
func (v *S3Volume) translateError(err error) error {
switch err := err.(type) {
case *s3.Error:
func (v *S3Volume) translateError(err error) error {
switch err := err.(type) {
case *s3.Error:
- if err.StatusCode == http.StatusNotFound && err.Code == "NoSuchKey" {
+ if (err.StatusCode == http.StatusNotFound && err.Code == "NoSuchKey") ||
+ strings.Contains(err.Error(), "Not Found") {
return os.ErrNotExist
}
// Other 404 errors like NoSuchVersion and
return os.ErrNotExist
}
// Other 404 errors like NoSuchVersion and