]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fixes for period puller 10764/head
authorCasey Bodley <cbodley@redhat.com>
Fri, 5 Aug 2016 15:28:13 +0000 (11:28 -0400)
committerLoic Dachary <ldachary@redhat.com>
Wed, 17 Aug 2016 16:15:39 +0000 (18:15 +0200)
* reset epoch=0 before RGWPeriod::init() so we get the latest_epoch
* if we're the metadata master, don't try to pull periods from ourself

Fixes: http://tracker.ceph.com/issues/16939
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 06c384f1c5aa5b4b6404a3caf8a5f88ee40b0b03)

src/rgw/rgw_period_puller.cc

index a35591ccb92c3074f46a798aba17142a261e99d5..b76f73e4a53b3a5dc745af78609e998e622cd0af 100644 (file)
@@ -57,8 +57,15 @@ int RGWPeriodPuller::pull(const std::string& period_id, RGWPeriod& period)
 {
   // try to read the period from rados
   period.set_id(period_id);
+  period.set_epoch(0);
   int r = period.init(store->ctx(), store);
   if (r < 0) {
+    if (store->is_meta_master()) {
+      // can't pull if we're the master
+      ldout(store->ctx(), 1) << "metadata master failed to read period "
+          << period_id << " from local storage: " << cpp_strerror(r) << dendl;
+      return r;
+    }
     ldout(store->ctx(), 14) << "pulling period " << period_id
         << " from master" << dendl;
     // request the period from the master zone