Skip to content

Commit cf4f6ba

Browse files
feat: improve error handling
1 parent 88d07b6 commit cf4f6ba

File tree

11 files changed

+51
-46
lines changed

11 files changed

+51
-46
lines changed

Examples/handle_query_error.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44
import logging
55
from config import Config
6-
from influxdb_client_3.influxdb_client_error import InfluxdbClientQueryError
6+
from influxdb_client_3.exceptions.exceptions import InfluxDB3ClientQueryError
77

88
import influxdb_client_3 as InfluxDBClient3
99

@@ -25,7 +25,7 @@ def main() -> None:
2525
try:
2626
# Select from a bucket that doesn't exist
2727
client.query("Select a from cpu11")
28-
except InfluxdbClientQueryError as e:
28+
except InfluxDB3ClientQueryError as e:
2929
logging.log(logging.ERROR, e.message)
3030

3131

influxdb_client_3/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import pyarrow as pa
77
from pyarrow import ArrowException
88

9-
from influxdb_client_3.influxdb_client_error import InfluxdbClientQueryError
9+
from influxdb_client_3.exceptions.exceptions import InfluxDB3ClientQueryError
1010
from influxdb_client_3.query.query_api import QueryApi as _QueryApi, QueryApiOptionsBuilder
1111
from influxdb_client_3.read_file import UploadFile
1212
from influxdb_client_3.write_client import InfluxDBClient as _InfluxDBClient, WriteOptions, Point
13-
from influxdb_client_3.write_client.client.exceptions import InfluxDBError
13+
from influxdb_client_3.exceptions.exceptions import InfluxDBError
1414
from influxdb_client_3.write_client.client.write_api import WriteApi as _WriteApi, SYNCHRONOUS, ASYNCHRONOUS, \
1515
PointSettings, DefaultWriteOptions, WriteType
1616
from influxdb_client_3.write_client.domain.write_precision import WritePrecision
@@ -403,7 +403,7 @@ def query(self, query: str, language: str = "sql", mode: str = "all", database:
403403
try:
404404
return self._query_api.query(query=query, language=language, mode=mode, database=database, **kwargs)
405405
except ArrowException as e:
406-
raise InfluxdbClientQueryError(f"Error while executing query: {e}")
406+
raise InfluxDB3ClientQueryError(f"Error while executing query: {e}")
407407

408408
async def query_async(self, query: str, language: str = "sql", mode: str = "all", database: str = None, **kwargs):
409409
"""Query data from InfluxDB asynchronously.
@@ -436,7 +436,7 @@ async def query_async(self, query: str, language: str = "sql", mode: str = "all"
436436
database=database,
437437
**kwargs)
438438
except ArrowException as e:
439-
raise InfluxdbClientQueryError(f"Error while executing query: {e}")
439+
raise InfluxDB3ClientQueryError(f"Error while executing query: {e}")
440440

441441
def close(self):
442442
"""Close the client and clean up resources."""

influxdb_client_3/exceptions/__init__.py

Whitespace-only changes.

influxdb_client_3/write_client/client/exceptions.py renamed to influxdb_client_3/exceptions/exceptions.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,43 @@
44

55
from urllib3 import HTTPResponse
66

7-
logger = logging.getLogger('influxdb_client_3.write_client.client.exceptions')
7+
logger = logging.getLogger('influxdb_client_3.exceptions.exceptions')
88

99

10-
class InfluxDBError(Exception):
10+
class InfluxDB3ClientError(Exception):
11+
"""
12+
Exception raised for errors in the InfluxDB client operations.
13+
14+
Represents errors that occur during interactions with the InfluxDB
15+
database client. This exception is a general base class for more
16+
specific client-related failures and is typically used to signal issues
17+
such as invalid queries, connection failures, or API misusage.
18+
"""
19+
pass
20+
21+
22+
# This error is for all query operations
23+
class InfluxDB3ClientQueryError(InfluxDB3ClientError):
24+
"""
25+
Represents an error that occurs when querying an InfluxDB client.
26+
27+
This class is specifically designed to handle errors originating from
28+
client queries to an InfluxDB database. It extends the general
29+
`InfluxDBClientError`, allowing more precise identification and
30+
handling of query-related issues.
31+
32+
:ivar message: Contains the specific error message describing the
33+
query error.
34+
:type message: str
35+
"""
36+
37+
def __init__(self, error_message, *args, **kwargs):
38+
super().__init__(error_message, *args, **kwargs)
39+
self.message = error_message
40+
41+
42+
# This error is for all write operations
43+
class InfluxDBError(InfluxDB3ClientError):
1144
"""Raised when a server error occurs."""
1245

1346
def __init__(self, response: HTTPResponse = None, message: str = None):

influxdb_client_3/influxdb_client_error.py

Lines changed: 0 additions & 28 deletions
This file was deleted.

influxdb_client_3/write_client/client/util/multiprocessing_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import multiprocessing
99

1010
from influxdb_client_3.write_client import InfluxDBClient, WriteOptions
11-
from influxdb_client_3.write_client.client.exceptions import InfluxDBError
11+
from influxdb_client_3.exceptions.exceptions import InfluxDBError
1212

1313
logger = logging.getLogger('influxdb_client.client.util.multiprocessing_helper')
1414

influxdb_client_3/write_client/client/write/retry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from urllib3 import Retry
1010
from urllib3.exceptions import MaxRetryError, ResponseError
1111

12-
from influxdb_client_3.write_client.client.exceptions import InfluxDBError
12+
from influxdb_client_3.exceptions.exceptions import InfluxDBError
1313

1414
logger = logging.getLogger('influxdb_client.client.write.retry')
1515

influxdb_client_3/write_client/rest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import logging
66
from typing import Dict
77

8-
from influxdb_client_3.write_client.client.exceptions import InfluxDBError
8+
from influxdb_client_3.exceptions.exceptions import InfluxDBError
99
from influxdb_client_3.write_client.configuration import Configuration
1010

1111
_UTF_8_encoding = 'utf-8'

tests/test_api_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from influxdb_client_3.write_client._sync.api_client import ApiClient
88
from influxdb_client_3.write_client.configuration import Configuration
9-
from influxdb_client_3.write_client.client.exceptions import InfluxDBError
9+
from influxdb_client_3.exceptions.exceptions import InfluxDBError
1010
from influxdb_client_3.write_client.service import WriteService
1111
from influxdb_client_3.version import VERSION
1212

tests/test_influxdb_client_3.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from unittest.mock import patch
33

44
from influxdb_client_3 import InfluxDBClient3, WritePrecision, DefaultWriteOptions, Point, WriteOptions, WriteType
5-
from influxdb_client_3.influxdb_client_error import InfluxdbClientQueryError
5+
from influxdb_client_3.exceptions.exceptions import InfluxDB3ClientQueryError
66
from tests.util import asyncio_run
77
from tests.util.mocks import ConstantFlightServer, ConstantData, ErrorFlightServer
88

@@ -162,15 +162,15 @@ def test_parse_invalid_write_precision(self):
162162
def test_query_with_arrow_error(self):
163163
f = ErrorFlightServer()
164164
with InfluxDBClient3(f"http://localhost:{f.port}", "my_org", "my_db", "my_token") as c:
165-
with self.assertRaises(InfluxdbClientQueryError) as err:
165+
with self.assertRaises(InfluxDB3ClientQueryError) as err:
166166
c.query("SELECT * FROM my_data")
167167
self.assertIn("Error while executing query", str(err.exception))
168168

169169
@asyncio_run
170170
async def test_async_query_with_arrow_error(self):
171171
f = ErrorFlightServer()
172172
with InfluxDBClient3(f"http://localhost:{f.port}", "my_org", "my_db", "my_token") as c:
173-
with self.assertRaises(InfluxdbClientQueryError) as err:
173+
with self.assertRaises(InfluxDB3ClientQueryError) as err:
174174
await c.query_async("SELECT * FROM my_data")
175175
self.assertIn("Error while executing query", str(err.exception))
176176

0 commit comments

Comments
 (0)