yes, by inspecting the log file,
$ grep "pg ls" logs/*.log
logs/ceph-mon.mon1.log:2015-05-06 07:28:30.607083 7fd9237a5700 0 mon.mon1@0(leader) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon1.log:2015-05-06 07:28:30.607184 7fd9237a5700 0 log_channel(audit) log [DBG] : from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon1.log: -8> 2015-05-06 07:28:30.606924 7fd9237a5700 1 -- 10.12.27.2:6789/0 <== client.4762 10.12.27.2:0/1024942 4 ==== mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1 ==== 102+0+0 (153034552 0 0) 0x6593800 con 0x660ce60
logs/ceph-mon.mon1.log: -7> 2015-05-06 07:28:30.607083 7fd9237a5700 0 mon.mon1@0(leader) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon1.log: -6> 2015-05-06 07:28:30.607184 7fd9237a5700 0 log_channel(audit) log [DBG] : from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon1.log: -3> 2015-05-06 07:28:30.607214 7fd9237a5700 10 log_client will send 2015-05-06 07:28:30.607195 mon.0 10.12.27.2:6789/0 2165 : audit [DBG] from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon2.log:2015-05-06 07:28:28.138983 7fad29cf5700 0 mon.mon2@1(peon) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon2.log:2015-05-06 07:28:28.139077 7fad29cf5700 0 log_channel(audit) log [DBG] : from='client.? 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon2.log: -8> 2015-05-06 07:28:28.138779 7fad29cf5700 1 -- 10.12.27.3:6789/0 <== client.4762 10.12.27.2:0/1024942 8 ==== mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1 ==== 102+0+0 (153034552 0 0) 0x4522800 con 0x425dc20
logs/ceph-mon.mon2.log: -7> 2015-05-06 07:28:28.138983 7fad29cf5700 0 mon.mon2@1(peon) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon2.log: -6> 2015-05-06 07:28:28.139077 7fad29cf5700 0 log_channel(audit) log [DBG] : from='client.? 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon2.log: -3> 2015-05-06 07:28:28.139100 7fad29cf5700 10 log_client will send 2015-05-06 07:28:28.139085 mon.1 10.12.27.3:6789/0 245 : audit [DBG] from='client.? 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon3.log:2015-05-06 06:09:14.232803 7fcbea862700 0 mon.mon3@2(peon) e1 handle_command mon_command({"prefix": "pg ls-by-pool", "poolstr": "remapped"} v 0) v1
logs/ceph-mon.mon3.log:2015-05-06 06:09:14.232927 7fcbea862700 0 log_channel(audit) log [DBG] : from='client.? 10.12.27.2:0/1017585' entity='client.admin' cmd=[{"prefix": "pg ls-by-pool", "poolstr": "remapped"}]: dispatch
logs/ceph-mon.mon3.log:2015-05-06 06:09:24.683393 7fcbea862700 0 mon.mon3@2(peon) e1 handle_command mon_command({"states": ["remapped"], "prefix": "pg ls-by-pool", "poolstr": "testpool"} v 0) v1
logs/ceph-mon.mon3.log:2015-05-06 06:09:24.683518 7fcbea862700 0 log_channel(audit) log [DBG] : from='client.? 10.12.27.2:0/1017696' entity='client.admin' cmd=[{"states": ["remapped"], "prefix": "pg ls-by-pool", "poolstr": "testpool"}]: dispatch
logs/ceph-mon.mon3.log:2015-05-06 07:28:28.359575 7fcbea862700 0 mon.mon3@2(peon) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon3.log:2015-05-06 07:28:28.359682 7fcbea862700 0 log_channel(audit) log [DBG] : from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon3.log: -8> 2015-05-06 07:28:28.359428 7fcbea862700 1 -- 10.12.27.5:6789/0 <== client.4762 10.12.27.2:0/1024942 4 ==== mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1 ==== 102+0+0 (153034552 0 0) 0x5a6dc00 con 0x7720f20
logs/ceph-mon.mon3.log: -7> 2015-05-06 07:28:28.359575 7fcbea862700 0 mon.mon3@2(peon) e1 handle_command mon_command({"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2} v 0) v1
logs/ceph-mon.mon3.log: -6> 2015-05-06 07:28:28.359682 7fcbea862700 0 log_channel(audit) log [DBG] : from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
logs/ceph-mon.mon3.log: -3> 2015-05-06 07:28:28.359718 7fcbea862700 10 log_client will send 2015-05-06 07:28:28.359695 mon.2 10.12.27.5:6789/0 269 : audit [DBG] from='client.4762 10.12.27.2:0/1024942' entity='client.admin' cmd=[{"states": ["recovery"], "prefix": "pg ls-by-osd", "osd": 2}]: dispatch
and we normalize these "pg ls-by-*" commands to "pg ls". and try to translate the "state" to the internal representation using pg_string_state()
, which brings down the mon if the string is not recognized. in this case, "recovery" is listed in the MonCommands, but not understood by pg_string_state()
.
the root cause of this issue is the inconsistency in between the command spec and the implementation of the command.