From: Sage Weil Date: Tue, 2 Jul 2013 20:43:29 +0000 (-0700) Subject: osdc/Objecter: resend command map version checks on reconnect X-Git-Tag: v0.66~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a4805efc1814c53678d74920814c7825bdcd8e64;p=ceph.git osdc/Objecter: resend command map version checks on reconnect We already do this for Ops and LingerOps, but missed this when we added CommandOps to the mix. The result is that an ill-timed mon disconnect will leave a command map check (and thus the command) hanging. This misbehavior was introduced when CommandOp was introduced, back in commit 2e172225b01561bb7988b6d86d96ff4b9c1c5762, and we failed to fix it in 8808ca57c652502d9cf803b0dc53673ca9dd62af. Fixes: #5493 Signed-off-by: Sage Weil Reviewed-by: Josh Durgin --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index f5e997ad67f..1dfeb36e030 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1131,6 +1131,13 @@ void Objecter::resend_mon_ops() C_Linger_Map_Latest *c = new C_Linger_Map_Latest(this, p->second->linger_id); monc->get_version("osdmap", &c->latest, NULL, c); } + + for (map::iterator p = check_latest_map_commands.begin(); + p != check_latest_map_commands.end(); + ++p) { + C_Command_Map_Latest *c = new C_Command_Map_Latest(this, p->second->tid); + monc->get_version("osdmap", &c->latest, NULL, c); + } }