diff --git a/messenger.cpp b/messenger.cpp index 20aea23b..ebaab305 100644 --- a/messenger.cpp +++ b/messenger.cpp @@ -340,8 +340,6 @@ void osd_messenger_t::stop_client(int peer_fd) if (cl->osd_num) { osd_peer_fds.erase(cl->osd_num); - // Cancel outbound operations - cancel_osd_ops(cl); } if (cl->read_op) { @@ -367,14 +365,21 @@ void osd_messenger_t::stop_client(int peer_fd) free(cl->in_buf); cl->in_buf = NULL; close(peer_fd); + if (repeer_osd) + { + // First repeer PGs as canceling OSD ops may push new operations + // and we need correct PG states when we do that + repeer_pgs(repeer_osd); + } + if (cl->osd_num) + { + // Cancel outbound operations + cancel_osd_ops(cl); + } if (cl->refs <= 0) { delete cl; } - if (repeer_osd) - { - repeer_pgs(repeer_osd); - } } void osd_messenger_t::accept_connections(int listen_fd) diff --git a/mon/mon.js b/mon/mon.js index 9919085c..41fbd331 100644 --- a/mon/mon.js +++ b/mon/mon.js @@ -1067,7 +1067,7 @@ class Mon } catch (e) { - console.log('Bad key in etcd: '+kv.key+' = '+kv.value); + console.log('Bad value in etcd: '+kv.key+' = '+kv.value); return; } key = key.split('/');