From: huanwen ren Date: Fri, 21 Sep 2018 19:13:02 +0000 (+0800) Subject: librados: Add compatible code to PG new pg_state_ready field X-Git-Tag: v14.0.1~86^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c2a541cb8276c1e6567e351b050d6ebea930807d;p=ceph.git librados: Add compatible code to PG new pg_state_ready field Fixes: http://tracker.ceph.com/issues/25103 Signed-off-by: huanwen ren --- diff --git a/src/librados/librados.cc b/src/librados/librados.cc index b835f7add957..e12ea00926cf 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -2701,10 +2701,22 @@ namespace { if (!parser.parse(outbl.c_str(), outbl.length())) { return -EINVAL; } + + vector v; if (!parser.is_array()) { - return -EINVAL; + JSONObj *pgstat_obj = parser.find_obj("pg_stats"); + if (NULL == pgstat_obj) + return 0; + string s = pgstat_obj->get_data(); + JSONParser pg_stats; + if (!pg_stats.parse(s.c_str(), s.length())) + return -EINVAL; + v = pg_stats.get_array_elements(); + } + else { + v = parser.get_array_elements(); } - vector v = parser.get_array_elements(); + for (auto i : v) { JSONParser pg_json; if (!pg_json.parse(i.c_str(), i.length())) {