]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_op: return 503 if forward_req fails 8605/head
authorAbhishek Lekshmanan <abhishek@suse.com>
Thu, 14 Apr 2016 16:23:26 +0000 (18:23 +0200)
committerAbhishek Lekshmanan <alekshmanan@suse.com>
Thu, 14 Apr 2016 19:00:53 +0000 (21:00 +0200)
Return 503 for requests when we have a failure from
forward_request_to_master, we can probably fine tune things a little
here in the future by making rest_client and http_client return more
correct error messages depending on various failures

Fixes: http://tracker.ceph.com/issues/15501
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
src/rgw/rgw_op.cc
src/rgw/rgw_rest_client.cc

index c781eb9ffd4897f8a1830e258108b9416287f388..aea0470465156fb96c48694729098806311a764c 100644 (file)
@@ -1928,8 +1928,9 @@ void RGWCreateBucket::execute()
   if (!store->is_meta_master()) {
     JSONParser jp;
     op_ret = forward_request_to_master(s, NULL, store, in_data, &jp);
-    if (op_ret < 0)
+    if (op_ret < 0) {
       return;
+    }
 
     JSONDecoder::decode_json("entry_point_object_ver", ep_objv, &jp);
     JSONDecoder::decode_json("object_ver", objv, &jp);
index 73cc12999de0f111f54a151e4e22ce0b4460ceab..9be52d37af30c4c9e91e8e77d7434b6e12e01907 100644 (file)
@@ -292,8 +292,13 @@ int RGWRESTSimpleRequest::forward_request(RGWAccessKey& key, req_info& info, siz
   }
 
   int r = process(new_info.method, new_url.c_str());
-  if (r < 0)
+  if (r < 0){
+    if (r == -EINVAL){
+      // curl_easy has errored, generally means the service is not available
+      r = -ERR_SERVICE_UNAVAILABLE;
+    }
     return r;
+  }
 
   response.append((char)0); /* NULL terminate response */