diff options
author | Sage Weil <sage@inktank.com> | 2013-06-13 15:13:47 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-13 15:16:20 -0700 |
commit | 68a91995ba4ae7a0dccbe73b9c007e71d86b0d9d (patch) | |
tree | d2418942bc17e701db725b9168b154da8d1ac5de | |
parent | db7d12103a42263e08a660ec33c74eeb70b6a20f (diff) | |
download | ceph-68a91995ba4ae7a0dccbe73b9c007e71d86b0d9d.tar.gz |
osdc/Objecter: kick command ops on osd con resets
Resend osd/pg commands on the OSDSession, just as we do with other request
types.
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osdc/Objecter.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index ad7481f42ca..685d8c5fe5e 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1013,6 +1013,17 @@ void Objecter::kick_requests(OSDSession *session) send_linger(lresend.begin()->second); lresend.erase(lresend.begin()); } + + // resend commands + map<uint64_t,CommandOp*> cresend; // resend in order + for (xlist<CommandOp*>::iterator k = session->command_ops.begin(); !k.end(); ++k) { + logger->inc(l_osdc_command_resend); + cresend[(*k)->tid] = *k; + } + while (!cresend.empty()) { + _send_command(cresend.begin()->second); + cresend.erase(cresend.begin()); + } } void Objecter::schedule_tick() |