[ARVADOS] updated: 676ca01c9fe02da07c140ac07d746c3d1e326527

Git user git at public.curoverse.com
Mon May 16 11:45:38 EDT 2016


Summary of changes:
 services/keepstore/azure_blob_volume.go      | 38 +++++++++-------------------
 services/keepstore/azure_blob_volume_test.go | 11 +++++---
 2 files changed, 20 insertions(+), 29 deletions(-)

       via  676ca01c9fe02da07c140ac07d746c3d1e326527 (commit)
      from  22db012b60f3501a38ca1b78dc00407f6edd8311 (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 676ca01c9fe02da07c140ac07d746c3d1e326527
Author: radhika <radhika at curoverse.com>
Date:   Mon May 16 11:44:25 2016 -0400

    8556: EmptyTrash gets metadata along with List response using Include parameter.

diff --git a/services/keepstore/azure_blob_volume.go b/services/keepstore/azure_blob_volume.go
index 9e76332..6274f0d 100644
--- a/services/keepstore/azure_blob_volume.go
+++ b/services/keepstore/azure_blob_volume.go
@@ -322,7 +322,8 @@ func (v *AzureBlobVolume) Mtime(loc string) (time.Time, error) {
 // container.
 func (v *AzureBlobVolume) IndexTo(prefix string, writer io.Writer) error {
 	params := storage.ListBlobsParameters{
-		Prefix: prefix,
+		Prefix:  prefix,
+		Include: "metadata",
 	}
 	for {
 		resp, err := v.bsClient.ListBlobs(v.containerName, params)
@@ -387,12 +388,9 @@ func (v *AzureBlobVolume) Trash(loc string) error {
 	}
 
 	// Otherwise, mark as trash
-	metadata, err := v.bsClient.GetBlobMetadata(v.containerName, loc)
-	if err != nil {
-		return err
-	}
-	metadata["expires_at"] = fmt.Sprintf("%d", time.Now().Add(trashLifetime).Unix())
-	return v.bsClient.SetBlobMetadata(v.containerName, loc, metadata, map[string]string{
+	return v.bsClient.SetBlobMetadata(v.containerName, loc, map[string]string{
+		"expires_at": fmt.Sprintf("%d", time.Now().Add(trashLifetime).Unix()),
+	}, map[string]string{
 		"If-Match": props.Etag,
 	})
 }
@@ -466,7 +464,7 @@ func (v *AzureBlobVolume) isKeepBlock(s string) bool {
 func (v *AzureBlobVolume) EmptyTrash() {
 	var bytesDeleted, bytesInTrash int64
 	var blocksDeleted, blocksInTrash int
-	params := storage.ListBlobsParameters{}
+	params := storage.ListBlobsParameters{Include: "metadata"}
 
 	for {
 		resp, err := v.bsClient.ListBlobs(v.containerName, params)
@@ -475,35 +473,23 @@ func (v *AzureBlobVolume) EmptyTrash() {
 			break
 		}
 		for _, b := range resp.Blobs {
-			blocksInTrash++
-
-			// Get the Etag before checking expires_at, and use it to delete blob
-			props, err := v.bsClient.GetBlobProperties(v.containerName, b.Name)
-			if err != nil {
-				log.Printf("EmptyTrash: GetBlobProperties(%v): %v", b.Name, err)
-				continue
-			}
-
 			// Check if it is expired
-			metadata, err := v.bsClient.GetBlobMetadata(v.containerName, b.Name)
-			if err != nil {
-				log.Printf("EmptyTrash: GetBlobMetadata(%v): %v", b.Name, err)
-				continue
-			}
-
-			expiresAtMetadata := metadata["expires_at"]
+			expiresAtMetadata := b.Metadata["expires_at"]
 			if expiresAtMetadata == "" {
 				continue
 			}
+
+			blocksInTrash++
+
 			expiresAt, err := strconv.ParseInt(expiresAtMetadata, 10, 64)
 			if err != nil {
 				log.Printf("EmptyTrash: ParseInt(%v): %v", expiresAtMetadata, err)
 				continue
 			}
 
-			if expiresAt <= time.Now().Add(-1*trashLifetime).Unix() {
+			if expiresAt <= time.Now().Unix() {
 				err = v.bsClient.DeleteBlob(v.containerName, b.Name, map[string]string{
-					"If-Match": props.Etag,
+					"If-Match": b.Properties.Etag,
 				})
 				if err != nil {
 					log.Printf("EmptyTrash: DeleteBlob(%v): %v", b.Name, err)
diff --git a/services/keepstore/azure_blob_volume_test.go b/services/keepstore/azure_blob_volume_test.go
index af5b283..429c15e 100644
--- a/services/keepstore/azure_blob_volume_test.go
+++ b/services/keepstore/azure_blob_volume_test.go
@@ -285,15 +285,20 @@ func (h *azStubHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
 			}
 			if len(resp.Blobs) > 0 || marker == "" || marker == hash {
 				blob := h.blobs[container+"|"+hash]
-				resp.Blobs = append(resp.Blobs, storage.Blob{
+				bmeta := map[string]string(nil)
+				if r.Form.Get("include") == "metadata" {
+					bmeta = blob.Metadata
+				}
+				b := storage.Blob{
 					Name: hash,
 					Properties: storage.BlobProperties{
 						LastModified:  blob.Mtime.Format(time.RFC1123),
 						ContentLength: int64(len(blob.Data)),
 						Etag:          blob.Etag,
 					},
-					Metadata: blob.Metadata,
-				})
+					Metadata: bmeta,
+				}
+				resp.Blobs = append(resp.Blobs, b)
 			}
 		}
 		buf, err := xml.Marshal(resp)

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list