]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix miss handle curl error return 28383/head
authorTianshan Qu <tianshan@xsky.com>
Fri, 31 May 2019 10:37:44 +0000 (18:37 +0800)
committerXiaoxi CHEN <xiaoxchen@ebay.com>
Wed, 5 Jun 2019 02:28:55 +0000 (19:28 -0700)
if meet tcp packet loss, curl return will be result=18(CURLE_PARTIAL_FILE)
and http_status=200, so sync will continue and cause content miss match.

Fixes: https://tracker.ceph.com/issues/39992
Signed-off-by: Tianshan Qu <tianshan@xsky.com>
(cherry picked from commit 9b7025857026c64cf076e82d762556ac2bcd2625)

src/rgw/rgw_http_client.cc

index 50fe7915099faf64d85e16bd526050a942e0c095..d0f0baead6e5f95622787459b1e42d20f6903ffd 100644 (file)
@@ -1141,7 +1141,8 @@ void *RGWHTTPManager::reqs_thread_entry()
        curl_easy_getinfo(e, CURLINFO_RESPONSE_CODE, (void **)&http_status);
 
        int status = rgw_http_error_to_errno(http_status);
-        if (result != CURLE_OK && http_status == 0) {
+        if (result != CURLE_OK && status == 0) {
+          dout(0) << "ERROR: curl error: " << curl_easy_strerror((CURLcode)result) << ", maybe network unstable" << dendl;
           status = -EAGAIN;
         }
         int id = req_data->id;