]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: warn on unconnected snap realms
authorYan, Zheng <zheng.z.yan@intel.com>
Wed, 15 May 2013 03:24:36 +0000 (11:24 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Tue, 28 May 2013 05:57:22 +0000 (13:57 +0800)
When there are more than one active MDS, restarting MDS triggers
assertion "reconnected_snaprealms.empty()" quite often. If there
is no snapshot in the FS, the items left in reconnected_snaprealms
should be other MDS' mdsdir. I think it's harmless.

If there are snapshots in the FS, the assertion probably can catch
real bugs. But at present, snapshot feature is broken, fixing it is
non-trivial. So replace the assertion with a warning.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/MDCache.cc

index a67f605efd9e6bab413e05327fbe22f3f99c2327..8fc1ab83d11d7b28e9cd0170780ef48015aa9e3f 100644 (file)
@@ -5213,9 +5213,22 @@ void MDCache::open_snap_parents()
     gather.set_finisher(new C_MDC_OpenSnapParents(this));
     gather.activate();
   } else {
+    if (!reconnected_snaprealms.empty()) {
+      stringstream warn_str;
+      for (map<inodeno_t,map<client_t,snapid_t> >::iterator p = reconnected_snaprealms.begin();
+          p != reconnected_snaprealms.end();
+          ++p) {
+       warn_str << " unconnected snaprealm " << p->first << "\n";
+       for (map<client_t,snapid_t>::iterator q = p->second.begin();
+            q != p->second.end();
+            ++q)
+         warn_str << "  client." << q->first << " snapid " << q->second << "\n";
+      }
+      mds->clog.warn() << "open_snap_parents has:" << "\n";
+      mds->clog.warn(warn_str);
+    }
     assert(rejoin_waiters.empty());
     assert(missing_snap_parents.empty());
-    assert(reconnected_snaprealms.empty());
     dout(10) << "open_snap_parents - all open" << dendl;
     do_delayed_cap_imports();