recalc_auth_bits();
trim_non_auth();
mds->resolve_done();
+ } else {
+ maybe_send_pending_rejoins();
}
}
}
{
dout(10) << "rejoin_send_rejoins with recovery_set " << recovery_set << dendl;
+ if (!resolve_gather.empty()) {
+ dout(7) << "rejoin_send_rejoins still waiting for resolves ("
+ << resolve_gather << ")" << dendl;
+ rejoins_pending = true;
+ return;
+ }
+
map<int, MMDSCacheRejoin*> rejoins;
// encode cap list once.
mds->send_message_mds(p->second, p->first);
}
rejoin_ack_gather.insert(mds->whoami); // we need to complete rejoin_gather_finish, too
+ rejoins_pending = false;
// nothing?
if (mds->is_rejoin() && rejoins.empty()) {
protected:
// [rejoin]
+ bool rejoins_pending;
set<int> rejoin_gather; // nodes from whom i need a rejoin
set<int> rejoin_sent; // nodes i sent a rejoin to
set<int> rejoin_ack_gather; // nodes from whom i need a rejoin ack
void handle_cache_rejoin_full(MMDSCacheRejoin *m);
void rejoin_send_acks();
void rejoin_trim_undef_inodes();
+ void maybe_send_pending_rejoins() {
+ if (rejoins_pending)
+ rejoin_send_rejoins();
+ }
public:
void rejoin_gather_finish();
void rejoin_send_rejoins();