summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2013-05-15 11:24:36 +0800
committerYan, Zheng <zheng.z.yan@intel.com>2013-05-28 13:57:22 +0800
commit26effc0e583b0a3dade6ec81ef26dec1c94ac8b2 (patch)
treeb693f147bf6b37e9528fb80c75472b1c837cd57e
parentf3a9f4746d1498f62e241b5358c19547fd4749bc (diff)
downloadceph-26effc0e583b0a3dade6ec81ef26dec1c94ac8b2.tar.gz
mds: warn on unconnected snap realms
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>
-rw-r--r--src/mds/MDCache.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc
index a67f605efd9..8fc1ab83d11 100644
--- a/src/mds/MDCache.cc
+++ b/src/mds/MDCache.cc
@@ -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();