projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
8128: Add runtime tokens for containers, and locks for multiple dispatchers
[arvados.git]
/
services
/
keepstore
/
s3_volume.go
diff --git
a/services/keepstore/s3_volume.go
b/services/keepstore/s3_volume.go
index 572ee46e71419693b103801c7e01a8a139a0c69e..d068b2a6e5da0601eb7f9bb4c6a0ec8e4b891774 100644
(file)
--- a/
services/keepstore/s3_volume.go
+++ b/
services/keepstore/s3_volume.go
@@
-39,6
+39,9
@@
type s3VolumeAdder struct {
}
func (s *s3VolumeAdder) Set(bucketName string) error {
}
func (s *s3VolumeAdder) Set(bucketName string) error {
+ if trashLifetime != 0 {
+ return ErrNotImplemented
+ }
if bucketName == "" {
return fmt.Errorf("no container name given")
}
if bucketName == "" {
return fmt.Errorf("no container name given")
}
@@
-150,20
+153,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)
}
}
}
}
@@
-257,10
+258,14
@@
func (v *S3Volume) IndexTo(prefix string, writer io.Writer) error {
return nil
}
return nil
}
-func (v *S3Volume) Delete(loc string) error {
+// Trash a Keep block.
+func (v *S3Volume) Trash(loc string) error {
if v.readonly {
return MethodDisabledError
}
if v.readonly {
return MethodDisabledError
}
+ if trashLifetime != 0 {
+ return ErrNotImplemented
+ }
if t, err := v.Mtime(loc); err != nil {
return err
} else if time.Since(t) < blobSignatureTTL {
if t, err := v.Mtime(loc); err != nil {
return err
} else if time.Since(t) < blobSignatureTTL {
@@
-272,6
+277,11
@@
func (v *S3Volume) Delete(loc string) error {
return v.Bucket.Del(loc)
}
return v.Bucket.Del(loc)
}
+// TBD
+func (v *S3Volume) Untrash(loc string) error {
+ return ErrNotImplemented
+}
+
func (v *S3Volume) Status() *VolumeStatus {
return &VolumeStatus{
DeviceNum: 1,
func (v *S3Volume) Status() *VolumeStatus {
return &VolumeStatus{
DeviceNum: 1,
@@
-310,3
+320,9
@@
func (v *S3Volume) translateError(err error) error {
}
return err
}
}
return err
}
+
+// EmptyTrash looks for trashed blocks that exceeded trashLifetime
+// and deletes them from the volume.
+// TBD
+func (v *S3Volume) EmptyTrash() {
+}