Return failure code when an S3 put operation fails.
authorMichael Vrable <mvrable@cs.ucsd.edu>
Tue, 9 Nov 2010 00:41:42 +0000 (16:41 -0800)
committerMichael Vrable <mvrable@cs.ucsd.edu>
Tue, 9 Nov 2010 00:41:42 +0000 (16:41 -0800)
Previously, we were indicating success even when that wasn't true, leading
to errors later when we went to read data we hadn't written.  Now, the
caller can retry the put operation if needed.

bluesky/store-s3.c

index 03f497b..00bace4 100644 (file)
@@ -115,6 +115,7 @@ static void s3store_task(gpointer a, gpointer s)
 
     } else if (async->op == STORE_OP_PUT) {
         struct put_info info;
+        info.success = 0;
         info.val = async->data;
         info.offset = 0;
 
@@ -127,7 +128,11 @@ static void s3store_task(gpointer a, gpointer s)
         S3_put_object(&store->bucket, async->key, async->data->len, NULL, NULL,
                       &handler, &info);
 
-        async->result = 0;
+        if (info.success) {
+            async->result = 0;
+        } else {
+            g_warning("Error completing S3 put operation; client must retry!");
+        }
     }
 
     bluesky_store_async_mark_complete(async);