]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: prometheus rules internal server error
authorNizamudeen A <nia@redhat.com>
Tue, 26 Apr 2022 10:19:09 +0000 (15:49 +0530)
committerNizamudeen A <nia@redhat.com>
Tue, 23 Aug 2022 06:53:10 +0000 (12:23 +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>
(cherry picked from commit 672e27cbd2d66f87afa5e9e33537f333eadfb243)

src/pybind/mgr/dashboard/controllers/prometheus.py

index 057c92dd8f9cd4fdf020f02e9d3cd90e9a54934d..119db43c03a18f56254f97fe37274841815a7e98 100644 (file)
@@ -52,7 +52,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']