From cd1750b21ab33872f726a82c2f9ab71ad06d3fc6 Mon Sep 17 00:00:00 2001 From: "Peter J. Holzer" Date: Sat, 24 Aug 2024 22:51:29 +0200 Subject: [PATCH] Log JSON decode errors --- dashboard.py | 6 +++++- ltsdb_json.py | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dashboard.py b/dashboard.py index 8e4c2d4..b5f47f6 100644 --- a/dashboard.py +++ b/dashboard.py @@ -27,7 +27,11 @@ class Dashboard: if w.get("multi"): ts_list = LTS.find(w["data"][0]) for ts in ts_list: - tso = LTS(id=ts) + try: + tso = LTS(id=ts) + except json.decoder.JSONDecodeError as e: + log.error("%s contains bad data: %s: Skipping", ts, e) + continue if not tso.data: log.warning("%s has no data: Skipping", tso.id) continue diff --git a/ltsdb_json.py b/ltsdb_json.py index b123668..61dc318 100644 --- a/ltsdb_json.py +++ b/ltsdb_json.py @@ -41,6 +41,7 @@ class LTS: with open(self.filename, "x+") as fh: fcntl.flock(fh, fcntl.LOCK_EX) json.dump({"description": self.description, "data": self.data}, fh) + log.info(f"Created {self.filename}") self.rebuild_index() except json.decoder.JSONDecodeError as e: log.exception(f"Cannot decode JSON in {self.filename}: {e}") @@ -130,7 +131,11 @@ class LTS: (_, _, hash) = fn.rpartition("/") with open(fn, "r") as fh: fcntl.flock(fh, fcntl.LOCK_SH) - d = json.load(fh) + try: + d = json.load(fh) + except json.decoder.JSONDecodeError as e: + log.exception(f"Cannot decode JSON in {fn}: {e}") + raise for k, v in d["description"].items(): d1 = index.setdefault(k, {}) d2 = d1.setdefault(v, [])