Skip to content

Commit 00ee34e

Browse files
[DL Streamer Pipeline Server] : fix: enhance error message for InfluxDB initialization failures (open-edge-platform#600)
Co-authored-by: Ashish Jagadish <[email protected]>
1 parent a120d77 commit 00ee34e

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

microservices/dlstreamer-pipeline-server/src/publisher/influx/influx_writer.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ def __init__(self, config, qsize=DEFAULT_APPDEST_INFLUX_QUEUE_SIZE):
3939
self.influx_bucket_name = config.get("bucket")
4040
self.influx_measurement = config.get("measurement", "dlsps")
4141
self.influxwrite_complete = th.Event()
42-
4342
self.th = None
4443
self.log = get_logger(f'{__name__} ({self.influx_bucket_name})')
44+
if not self.influx_bucket_name:
45+
self.log.error(f'Empty value given for bucket name. It cannot be blank')
46+
self.initialized=False
4547
if not self.host:
4648
self.log.error(f'Empty value given for INFLUXDB_HOST. It cannot be blank')
4749
self.initialized=False
@@ -59,8 +61,12 @@ def __init__(self, config, qsize=DEFAULT_APPDEST_INFLUX_QUEUE_SIZE):
5961

6062
self.log.info(f'Initializing Influx Writer for bucket - {self.influx_bucket_name}')
6163
self.influx_client = InfluxClient(self.host, self.port, self.org, self.username, self.password)
62-
self.initialized=True
63-
self.log.info("InfluxDB Writer initialized")
64+
if not self.influx_client.bucket_exists(self.influx_bucket_name):
65+
self.log.error(f"Given bucket name - {self.influx_bucket_name} does NOT exist or server is inaccessible")
66+
self.initialized=False
67+
else:
68+
self.initialized=True
69+
self.log.info("InfluxDB Writer initialized")
6470

6571
def start(self):
6672
"""Start publisher.

microservices/dlstreamer-pipeline-server/utils/influx_client.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from influxdb_client.client.write_api import SYNCHRONOUS
1111
from src.publisher.influx.influx_schema import DataSchema
1212
from src.common.log import get_logger
13+
import urllib3
1314

1415
class InfluxClient():
1516
"""Influx Client.
@@ -43,6 +44,8 @@ def upload_metadata(self, influx_bucket_name, point, img_handle):
4344
try:
4445
self.write_api.write(bucket=influx_bucket_name, org=self.influx_org, record=point)
4546
self.log.debug(f"Successfully wrote data in influx for image handle: {img_handle}")
47+
except urllib3.exceptions.NameResolutionError as e:
48+
self.log.exception("Unable to resolve InfluxDB hostname. Please verify that InfluxDB is running.")
4649
except Exception as e:
4750
self.log.exception(f"Error writing data to InfluxDB for image handle: {img_handle}", e)
4851

@@ -87,4 +90,12 @@ def stop(self):
8790
"""
8891
# for compatibility with other publisher.
8992
# TODO: Implement safe disconnect.
90-
pass
93+
pass
94+
95+
def bucket_exists(self, bucket_name):
96+
try:
97+
buckets_api = self.client.buckets_api()
98+
buckets = buckets_api.find_buckets().buckets
99+
return any(bucket.name == bucket_name for bucket in buckets)
100+
except:
101+
return False

0 commit comments

Comments
 (0)