]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: prometheus rules internal server error 45811/head
authorNizamudeen A <nia@redhat.com>
Tue, 26 Apr 2022 10:19:09 +0000 (15:49 +0530)
committerNizamudeen A <nia@redhat.com>
Wed, 27 Apr 2022 06:34:02 +0000 (12:04 +0530)
After we increase/decrease the count of the node-exporter, we get a 500
- Internal server error from api/prometheus/rules endpoint. On further
  debugging its caused by the jsonDecodder, because I guess the expected
input for the json.loads() is not a json formatted input. So to fix
that issue I can either do an error handling on the json.loads() or I
can move the json.loads() on the already existing try block. I went for
the second approach here.

Fixes: https://tracker.ceph.com/issues/54356
Signed-off-by: Nizamudeen A <nia@redhat.com>
src/pybind/mgr/dashboard/controllers/prometheus.py

index f1dae7f1a2fa2d89b9b3e3e8176ab939343e7a69..af90f0d60088866045729debcedda8afa2239a24 100644 (file)
@@ -51,7 +51,12 @@ class PrometheusRESTController(RESTController):
                 "Could not reach {}'s API on {}".format(api_name, base_url),
                 http_status_code=404,
                 component='prometheus')
-        content = json.loads(response.content)
+        try:
+            content = json.loads(response.content, strict=False)
+        except json.JSONDecodeError as e:
+            raise DashboardException(
+                "Error parsing Prometheus Alertmanager response: {}".format(e.msg),
+                component='prometheus')
         if content['status'] == 'success':
             if 'data' in content:
                 return content['data']