You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2023/04/28 15:27:12 UTC
[iotdb] branch master updated: [IOTDB-5817] Optimize error message of python client (#9744)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new f6e8473a8dd [IOTDB-5817] Optimize error message of python client (#9744)
f6e8473a8dd is described below
commit f6e8473a8ddb7890472b38932b93a4e203d7c7f9
Author: Haonan <hh...@outlook.com>
AuthorDate: Fri Apr 28 23:27:07 2023 +0800
[IOTDB-5817] Optimize error message of python client (#9744)
---
client-py/SessionExample.py | 1 -
client-py/iotdb/Session.py | 323 ++++++++++------------
client-py/iotdb/utils/IoTDBConnectionException.py | 29 ++
client-py/iotdb/utils/IoTDBRpcDataSet.py | 10 +-
4 files changed, 188 insertions(+), 175 deletions(-)
diff --git a/client-py/SessionExample.py b/client-py/SessionExample.py
index 631b3e5d39b..d7223b16146 100644
--- a/client-py/SessionExample.py
+++ b/client-py/SessionExample.py
@@ -20,7 +20,6 @@
import numpy as np
from iotdb.Session import Session
-from iotdb.template.InternalNode import InternalNode
from iotdb.template.MeasurementNode import MeasurementNode
from iotdb.template.Template import Template
from iotdb.utils.BitMap import BitMap
diff --git a/client-py/iotdb/Session.py b/client-py/iotdb/Session.py
index a1be74eae42..c9e5f3902d1 100644
--- a/client-py/iotdb/Session.py
+++ b/client-py/iotdb/Session.py
@@ -56,6 +56,7 @@ from .thrift.rpc.ttypes import (
TSLastDataQueryReq,
TSInsertStringRecordsOfOneDeviceReq,
)
+from .utils.IoTDBConnectionException import IoTDBConnectionException
from .utils.IoTDBConstants import TSDataType
@@ -141,10 +142,11 @@ class Session(object):
self.__default_connection = self.init_connection(
self.__default_endpoint
)
- except Exception as e:
+ except Exception:
if not self.reconnect():
- logger.error("Cluster has no nodes to connect")
- raise e
+ raise IoTDBConnectionException(
+ "Cluster has no nodes to connect"
+ ) from None
break
self.__client = self.__default_connection.client
self.__session_id = self.__default_connection.session_id
@@ -165,7 +167,7 @@ class Session(object):
try:
transport.open()
except TTransport.TTransportException as e:
- raise e
+ raise IoTDBConnectionException(e) from None
if self.__enable_rpc_compression:
client = Client(TCompactProtocol.TCompactProtocol(transport))
@@ -199,15 +201,16 @@ class Session(object):
except Exception as e:
transport.close()
- logger.exception("session closed because: ", exc_info=e)
- raise e
+ raise IoTDBConnectionException(e) from None
if self.__zone_id is not None:
request = TSSetTimeZoneReq(session_id, self.__zone_id)
try:
client.setTimeZone(request)
except TTransport.TException as e:
- raise RuntimeError("Could not set time zone because: ", e)
+ raise IoTDBConnectionException(
+ "Could not set time zone because: ", e
+ ) from None
else:
self.__zone_id = self.get_time_zone()
return SessionConnection(client, transport, session_id, statement_id)
@@ -245,10 +248,9 @@ class Session(object):
self.__client.setStorageGroup(self.__session_id, group_name)
)
except TTransport.TException as e1:
- logger.exception("create databases fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def delete_storage_group(self, storage_group):
"""
@@ -276,10 +278,9 @@ class Session(object):
)
)
except TTransport.TException as e1:
- logger.exception("delete database fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def create_time_series(
self,
@@ -327,10 +328,9 @@ class Session(object):
self.__client.createTimeseries(request)
)
except TTransport.TException as e1:
- logger.exception("creating time series fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def create_aligned_time_series(
self, device_id, measurements_lst, data_type_lst, encoding_lst, compressor_lst
@@ -367,9 +367,9 @@ class Session(object):
self.__client.createAlignedTimeseries(request)
)
except TTransport.TException as e1:
- logger.exception("creating time series fails because: ", e1)
- raise e1
- raise e
+ raise IoTDBConnectionException(e1) from None
+ else:
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def create_multi_time_series(
self,
@@ -418,10 +418,9 @@ class Session(object):
self.__client.createMultiTimeseries(request)
)
except TTransport.TException as e1:
- logger.exception("creating multi time series fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def delete_time_series(self, paths_list):
"""
@@ -432,15 +431,16 @@ class Session(object):
return Session.verify_success(
self.__client.deleteTimeseries(self.__session_id, paths_list)
)
- except TTransport.TException:
+ except TTransport.TException as e:
if self.reconnect():
try:
return Session.verify_success(
self.__client.deleteTimeseries(self.__session_id, paths_list)
)
except TTransport.TException as e1:
- logger.exception("deleting time series fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
+ else:
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def check_time_series_exists(self, path):
"""
@@ -470,10 +470,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.deleteData(request))
except TTransport.TException as e1:
- logger.exception("data deletion fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def delete_data_in_range(self, paths_list, start_time, end_time):
"""
@@ -491,10 +490,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.deleteData(request))
except TTransport.TException as e1:
- logger.exception("data deletion fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_str_record(self, device_id, timestamp, measurements, string_values):
"""special case for inserting one row of String (TEXT) value"""
@@ -521,10 +519,9 @@ class Session(object):
self.__client.insertStringRecord(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_aligned_str_record(
self, device_id, timestamp, measurements, string_values
@@ -553,10 +550,9 @@ class Session(object):
self.__client.insertStringRecord(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_record(self, device_id, timestamp, measurements, data_types, values):
"""
@@ -588,10 +584,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.insertRecord(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_records(
self, device_ids: list, times, measurements_lst, types_lst, values_lst
@@ -637,10 +632,12 @@ class Session(object):
request.sessionId = self.__session_id
Session.verify_success(self.__client.insertRecords(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
+
return 0
else:
request = self.gen_insert_records_req(
@@ -656,10 +653,11 @@ class Session(object):
self.__client.insertRecords(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
def insert_aligned_record(
self, device_id, timestamp, measurements, data_types, values
@@ -693,10 +691,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.insertRecord(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_aligned_records(
self, device_ids, times, measurements_lst, types_lst, values_lst
@@ -742,10 +739,12 @@ class Session(object):
request.sessionId = self.__session_id
Session.verify_success(self.__client.insertRecords(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
+
return 0
else:
request = self.gen_insert_records_req(
@@ -761,10 +760,11 @@ class Session(object):
self.__client.insertRecords(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
def test_insert_record(
self, device_id, timestamp, measurements, data_types, values
@@ -791,10 +791,9 @@ class Session(object):
self.__client.testInsertRecord(request)
)
except TTransport.TException as e1:
- logger.exception("test insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def test_insert_records(
self, device_ids, times, measurements_lst, types_lst, values_lst
@@ -824,10 +823,9 @@ class Session(object):
self.__client.testInsertRecords(request)
)
except TTransport.TException as e1:
- logger.exception("test insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def gen_insert_record_req(
self, device_id, timestamp, measurements, data_types, values, is_aligned=False
@@ -923,10 +921,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.insertTablet(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_tablets(self, tablet_lst):
"""
@@ -966,10 +963,12 @@ class Session(object):
request.sessionId = self.__session_id
Session.verify_success(self.__client.insertTablets(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
+
return 0
else:
request = self.gen_insert_tablets_req(tablet_lst)
@@ -983,10 +982,11 @@ class Session(object):
self.__client.insertTablets(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
def insert_aligned_tablet(self, tablet):
"""
@@ -1015,10 +1015,9 @@ class Session(object):
request.sessionId = self.__session_id
return Session.verify_success(self.__client.insertTablet(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_aligned_tablets(self, tablet_lst):
"""
@@ -1058,10 +1057,12 @@ class Session(object):
request.sessionId = self.__session_id
Session.verify_success(self.__client.insertTablets(request))
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
+
return 0
else:
request = self.gen_insert_tablets_req(tablet_lst, True)
@@ -1075,10 +1076,11 @@ class Session(object):
self.__client.insertTablets(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(
+ self.connection_error_msg()
+ ) from None
def insert_records_of_one_device(
self, device_id, times_list, measurements_list, types_list, values_list
@@ -1146,10 +1148,9 @@ class Session(object):
self.__client.insertRecordsOfOneDevice(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_aligned_records_of_one_device(
self, device_id, times_list, measurements_list, types_list, values_list
@@ -1219,10 +1220,9 @@ class Session(object):
self.__client.insertRecordsOfOneDevice(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def gen_insert_records_of_one_device_request(
self,
@@ -1271,10 +1271,9 @@ class Session(object):
self.__client.testInsertTablet(request)
)
except TTransport.TException as e1:
- logger.exception("test insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def test_insert_tablets(self, tablet_list):
"""
@@ -1293,10 +1292,9 @@ class Session(object):
self.__client.testInsertTablets(request)
)
except TTransport.TException as e1:
- logger.exception("test insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def gen_insert_tablet_req(self, tablet, is_aligned=False):
data_type_values = [data_type.value for data_type in tablet.get_data_types()]
@@ -1358,10 +1356,10 @@ class Session(object):
request.statementId = self.__statement_id
resp = self.__client.executeQueryStatement(request)
except TTransport.TException as e1:
- logger.exception("execution of query statement fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
+
Session.verify_success(resp.status)
return SessionDataSet(
sql,
@@ -1391,12 +1389,10 @@ class Session(object):
request.statementId = self.__statement_id
resp = self.__client.executeUpdateStatement(request)
except TTransport.TException as e1:
- logger.exception(
- "execution of non-query statement fails because: ", e1
- )
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
+
return Session.verify_success(resp.status)
def execute_statement(self, sql: str, timeout=0):
@@ -1412,10 +1408,10 @@ class Session(object):
request.statementId = self.__statement_id
resp = self.__client.executeStatement(request)
except TTransport.TException as e1:
- logger.exception("execution of statement fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
+
Session.verify_success(resp.status)
if resp.columns:
return SessionDataSet(
@@ -1486,7 +1482,9 @@ class Session(object):
try:
resp = self.__client.getTimeZone(self.__session_id)
except TTransport.TException as e:
- raise RuntimeError("Could not get time zone because: ", e)
+ raise IoTDBConnectionException(
+ "Could not get time zone because: ", e
+ ) from None
return resp.timeZone
def set_time_zone(self, zone_id):
@@ -1499,7 +1497,9 @@ class Session(object):
)
)
except TTransport.TException as e:
- raise RuntimeError("Could not set time zone because: ", e)
+ raise IoTDBConnectionException(
+ "Could not set time zone because: ", e
+ ) from None
self.__zone_id = zone_id
@staticmethod
@@ -1524,7 +1524,6 @@ class Session(object):
):
return 0
- logger.error("error status is %s", status)
raise RuntimeError(str(status.code) + ": " + status.message)
@staticmethod
@@ -1592,10 +1591,9 @@ class Session(object):
request.statementId = self.__statement_id
resp = self.__client.executeRawDataQuery(request)
except TTransport.TException as e1:
- logger.exception("execution of query statement fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
Session.verify_success(resp.status)
return SessionDataSet(
"",
@@ -1634,10 +1632,9 @@ class Session(object):
request.statementId = self.__statement_id
resp = self.__client.executeLastDataQuery(request)
except TTransport.TException as e1:
- logger.exception("execution of query statement fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
Session.verify_success(resp.status)
return SessionDataSet(
"",
@@ -1693,10 +1690,9 @@ class Session(object):
self.__client.insertStringRecordsOfOneDevice(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def insert_aligned_string_records_of_one_device(
self,
@@ -1729,10 +1725,9 @@ class Session(object):
self.__client.insertStringRecordsOfOneDevice(request)
)
except TTransport.TException as e1:
- logger.exception("insert fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def reconnect(self):
if self.__hosts is None:
@@ -1765,13 +1760,23 @@ class Session(object):
self.__endpoint_to_connection = {
str(self.__default_endpoint): self.__default_connection
}
- except TTransport.TException:
- continue
+ except IoTDBConnectionException:
+ pass
break
if connected:
break
return connected
+ def connection_error_msg(self):
+ if self.__hosts is None:
+ msg = "Could not connect to [('%s', %s)]" % (self.__host, self.__port)
+ else:
+ node_list = []
+ for i in range(len(self.__hosts)):
+ node_list.append("('%s', %s)" % (self.__hosts[i], self.__ports[i]))
+ msg = "Could not connect to any of [%s]" % ", ".join(node_list)
+ return msg
+
def get_connection(self, device_id):
if (
self.__enable_redirection
@@ -1851,10 +1856,9 @@ class Session(object):
self.__client.createSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("create template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def drop_schema_template(self, template_name: str):
"""
@@ -1872,10 +1876,9 @@ class Session(object):
self.__client.dropSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("drop template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def add_measurements_in_template(
self,
@@ -1915,10 +1918,9 @@ class Session(object):
self.__client.appendSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("append template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def delete_node_in_template(self, template_name: str, path: str):
"""
@@ -1937,10 +1939,9 @@ class Session(object):
self.__client.pruneSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("prune template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def set_schema_template(self, template_name, prefix_path):
"""
@@ -1959,10 +1960,9 @@ class Session(object):
self.__client.setSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("set template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def unset_schema_template(self, template_name, prefix_path):
"""
@@ -1984,10 +1984,9 @@ class Session(object):
self.__client.unsetSchemaTemplate(request)
)
except TTransport.TException as e1:
- logger.exception("unset template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def count_measurements_in_template(self, template_name: str):
"""
@@ -2010,12 +2009,9 @@ class Session(object):
Session.verify_success(response.status)
return response.count
except TTransport.TException as e1:
- logger.exception(
- "count measurements in template fails because: ", e1
- )
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def is_measurement_in_template(self, template_name: str, path: str):
"""
@@ -2041,13 +2037,9 @@ class Session(object):
Session.verify_success(response.status)
return response.result
except TTransport.TException as e1:
- logger.exception(
- "judge the path is measurement or not in template fails because: ",
- e1,
- )
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def is_path_exist_in_template(self, template_name: str, path: str):
"""
@@ -2070,12 +2062,9 @@ class Session(object):
Session.verify_success(response.status)
return response.result
except TTransport.TException as e1:
- logger.exception(
- "judge the path is in template or not fails because: ", e1
- )
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def show_measurements_in_template(self, template_name: str, pattern: str = ""):
"""
@@ -2101,12 +2090,9 @@ class Session(object):
Session.verify_success(response.status)
return response.measurements
except TTransport.TException as e1:
- logger.exception(
- "show measurements in template fails because: ", e1
- )
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def show_all_templates(self):
"""
@@ -2129,10 +2115,9 @@ class Session(object):
Session.verify_success(response.status)
return response.measurements
except TTransport.TException as e1:
- logger.exception("show all template fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def show_paths_template_set_on(self, template_name):
"""
@@ -2154,10 +2139,9 @@ class Session(object):
Session.verify_success(response.status)
return response.measurements
except TTransport.TException as e1:
- logger.exception("show paths template set on fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
def show_paths_template_using_on(self, template_name):
"""
@@ -2181,10 +2165,9 @@ class Session(object):
Session.verify_success(response.status)
return response.measurements
except TTransport.TException as e1:
- logger.exception("show paths template using on fails because: ", e1)
- raise e1
+ raise IoTDBConnectionException(e1) from None
else:
- raise e
+ raise IoTDBConnectionException(self.connection_error_msg()) from None
class SessionConnection(object):
@@ -2204,10 +2187,10 @@ class SessionConnection(object):
try:
self.client.closeSession(req)
except TTransport.TException as e:
- logger.exception(
+ raise IoTDBConnectionException(
"Error occurs when closing session at server. Maybe server is down. Error message: ",
- exc_info=e,
- )
+ e,
+ ) from None
finally:
if self.transport is not None:
self.transport.close()
diff --git a/client-py/iotdb/utils/IoTDBConnectionException.py b/client-py/iotdb/utils/IoTDBConnectionException.py
new file mode 100644
index 00000000000..0f7b895d1f8
--- /dev/null
+++ b/client-py/iotdb/utils/IoTDBConnectionException.py
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+
+class IoTDBConnectionException(Exception):
+ def __init__(self, reason=None, cause=None, message=None):
+ if reason is not None:
+ super().__init__(reason)
+ elif cause is not None:
+ super().__init__(cause)
+ elif message is not None and cause is not None:
+ super().__init__(message, cause)
+ else:
+ super().__init__()
diff --git a/client-py/iotdb/utils/IoTDBRpcDataSet.py b/client-py/iotdb/utils/IoTDBRpcDataSet.py
index 07e6f384ee8..564a0377341 100644
--- a/client-py/iotdb/utils/IoTDBRpcDataSet.py
+++ b/client-py/iotdb/utils/IoTDBRpcDataSet.py
@@ -156,8 +156,10 @@ class IoTDBRpcDataSet(object):
return True
return False
- def _to_bitstring(self, b):
- return "{:0{}b}".format(int(binascii.hexlify(b), 16), 8 * len(b))
+ def _to_bitbuffer(self, b):
+ return bytes(
+ "{:0{}b}".format(int(binascii.hexlify(b), 16), 8 * len(b)), "utf-8"
+ )
def resultset_to_pandas(self):
result = {}
@@ -249,8 +251,8 @@ class IoTDBRpcDataSet(object):
tmp_array = np.full(total_length, None, dtype=data_array.dtype)
bitmap_buffer = self.__query_data_set.bitmapList[location]
- bitmap_str = self._to_bitstring(bitmap_buffer)
- bit_mask = (np.fromstring(bitmap_str, "u1") - ord("0")).astype(bool)
+ buffer = self._to_bitbuffer(bitmap_buffer)
+ bit_mask = (np.frombuffer(buffer, "u1") - ord("0")).astype(bool)
if len(bit_mask) != total_length:
bit_mask = bit_mask[:total_length]
tmp_array[bit_mask] = data_array