]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: Add compatible code to PG new pg_state_ready field 23622/head
authorhuanwen ren <ren.huanwen@zte.com.cn>
Fri, 21 Sep 2018 19:13:02 +0000 (03:13 +0800)
committerhuanwen ren <ren.huanwen@zte.com.cn>
Thu, 27 Sep 2018 15:22:50 +0000 (23:22 +0800)
Fixes: http://tracker.ceph.com/issues/25103
Signed-off-by: huanwen ren <ren.huanwen@zte.com.cn>
src/librados/librados.cc

index b835f7add957be0efcbb5756667ff695daaeef94..e12ea00926cf6400881870e96e5c6484955a8440 100644 (file)
@@ -2701,10 +2701,22 @@ namespace {
     if (!parser.parse(outbl.c_str(), outbl.length())) {
       return -EINVAL;
     }
+    
+    vector<string> 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<string> v = parser.get_array_elements();
+
     for (auto i : v) {
       JSONParser pg_json;
       if (!pg_json.parse(i.c_str(), i.length())) {