From 6ab0561382e0b481173d76709badb29daba06241 Mon Sep 17 00:00:00 2001 From: Holger Friedrich Date: Thu, 15 Dec 2022 11:31:20 +0100 Subject: [PATCH] [rrd4j] Error handling for broken rrd4j files (#13955) * [rrd4j] Error handling for broken rrd4j files Catch exceptions thrown by getDB(..) and print the name of the affected database file. This allows to identify a broken rrd4j file. Signed-off-by: Holger Friedrich --- .../rrd4j/internal/RRD4jPersistenceService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.persistence.rrd4j/src/main/java/org/openhab/persistence/rrd4j/internal/RRD4jPersistenceService.java b/bundles/org.openhab.persistence.rrd4j/src/main/java/org/openhab/persistence/rrd4j/internal/RRD4jPersistenceService.java index d29170d50..147e67540 100644 --- a/bundles/org.openhab.persistence.rrd4j/src/main/java/org/openhab/persistence/rrd4j/internal/RRD4jPersistenceService.java +++ b/bundles/org.openhab.persistence.rrd4j/src/main/java/org/openhab/persistence/rrd4j/internal/RRD4jPersistenceService.java @@ -152,7 +152,12 @@ public class RRD4jPersistenceService implements QueryablePersistenceService { } final String name = alias == null ? item.getName() : alias; - RrdDb db = getDB(name); + RrdDb db = null; + try { + db = getDB(name); + } catch (Exception e) { + logger.warn("Failed to open rrd4j database '{}' ({})", name, e.getClass().getName()); + } if (db == null) { return; } @@ -249,7 +254,13 @@ public class RRD4jPersistenceService implements QueryablePersistenceService { public Iterable query(FilterCriteria filter) { String itemName = filter.getItemName(); - RrdDb db = getDB(itemName); + RrdDb db = null; + try { + db = getDB(itemName); + } catch (Exception e) { + logger.warn("Failed to open rrd4j database '{}' ({})", itemName, e.getClass().getName()); + return List.of(); + } if (db == null) { logger.debug("Could not find item '{}' in rrd4j database", itemName); return List.of();