integration_performance tests: add comment describing how to run the tests; also...
[arvados.git] / services / keepstore / handlers.go
index e0e3c6174ada43a2e60c09a01b319831d6ff0d70..16c39c2c88f247da8ef011ce2a4ca37f07a9c0c5 100644 (file)
@@ -409,7 +409,7 @@ func PullHandler(resp http.ResponseWriter, req *http.Request) {
        var pr []PullRequest
        r := json.NewDecoder(req.Body)
        if err := r.Decode(&pr); err != nil {
-               http.Error(resp, BadRequestError.Error(), BadRequestError.HTTPCode)
+               http.Error(resp, err.Error(), BadRequestError.HTTPCode)
                return
        }
 
@@ -443,7 +443,7 @@ func TrashHandler(resp http.ResponseWriter, req *http.Request) {
        var trash []TrashRequest
        r := json.NewDecoder(req.Body)
        if err := r.Decode(&trash); err != nil {
-               http.Error(resp, BadRequestError.Error(), BadRequestError.HTTPCode)
+               http.Error(resp, err.Error(), BadRequestError.HTTPCode)
                return
        }
 
@@ -525,6 +525,7 @@ func GetBlock(hash string, update_timestamp bool) ([]byte, error) {
                        log.Printf("%s: checksum mismatch for request %s (actual %s)\n",
                                vol, hash, filehash)
                        error_to_caller = DiskHashError
+                       bufs.Put(buf)
                        continue
                }
                if error_to_caller == DiskHashError {
@@ -536,6 +537,7 @@ func GetBlock(hash string, update_timestamp bool) ([]byte, error) {
                                error_to_caller = GenericError
                                log.Printf("%s: Touch %s failed: %s",
                                        vol, hash, error_to_caller)
+                               bufs.Put(buf)
                                continue
                        }
                }
@@ -586,6 +588,7 @@ func PutBlock(block []byte, hash string) error {
        // so there is nothing special to do if err != nil.
        //
        if oldblock, err := GetBlock(hash, true); err == nil {
+               defer bufs.Put(oldblock)
                if bytes.Compare(block, oldblock) == 0 {
                        // The block already exists; return success.
                        return nil