Bug #5896
Updated by Joao Eduardo Luis over 10 years ago
on next (ceph version 0.67-rc3-100-ge8d72ef (e8d72ef0402a42c8aa8ea624497d13db81d5e361))
<pre>
$ ceph mon dump
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
dumped monmap epoch 9
epoch 9
fsid d8b53103-f50e-4fed-84e9-c95f30b5b441
last_changed 2013-08-06 17:56:49.452341
created 2013-08-05 19:24:54.662265
0: 127.0.0.1:6789/0 mon.a
1: 127.0.0.1:6790/0 mon.b
2: 127.0.0.1:6791/0 mon.c
$ ceph mon add foo 127.0.0.1:6795
*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH ***
Error EEXIST: mon foo 127.0.0.1:6795/0 already exists
</pre>
What the bug is:
- MonmapMonitor::handle_command() will add update the pending inc with the new mon, and queue the reply to the client on wait_for_finished_proposal().
- Monitor bootstraps due to updated monmap before waking up waiters on waiting_for_finished_proposal.
- all waiters on waiting_for_finished_proposal are retried with -EAGAIN
- Command is retried instead of replying to the client -> monitor already exists.