]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add 'state==SyncState::IncrementalSync' condition when add item to shards_behind. 14552/head
authorlu.shasha <lu.shasha@eisoo.com>
Fri, 14 Apr 2017 09:22:37 +0000 (17:22 +0800)
committerlu.shasha <lu.shasha@eisoo.com>
Mon, 24 Apr 2017 00:55:19 +0000 (08:55 +0800)
after running 'radosgw-admin data sync init', the sync_marker's state will change to FullSync, but the marker didn't clean. So 'sync status' command will wrongly inset shards_behind.

Signed-off-by: Shasha Lu <lu.shasha@eisoo.com>
src/rgw/rgw_admin.cc

index de1b3b62bf2a37499a17361df8748f848e38305d..e8bdf9a0c3369b752aa6b36098fc5aed88c5c767 100644 (file)
@@ -1897,7 +1897,8 @@ static void get_md_sync_status(list<string>& status)
         continue;
       }
       auto master_marker = iter->second.marker;
-      if (master_marker > local_iter.second.marker) {
+      if (local_iter.second.state == rgw_meta_sync_marker::SyncState::IncrementalSync &&
+          master_marker > local_iter.second.marker) {
         shards_behind[shard_id] = local_iter.second.marker;
       }
     }
@@ -2044,7 +2045,8 @@ static void get_data_sync_status(const string& source_zone, list<string>& status
       continue;
     }
     auto master_marker = iter->second.marker;
-    if (master_marker > local_iter.second.marker) {
+    if (local_iter.second.state == rgw_data_sync_marker::SyncState::IncrementalSync &&
+        master_marker > local_iter.second.marker) {
       shards_behind[shard_id] = local_iter.second.marker;
     }
   }