InfluxDB-MacOS-Desktop icon indicating copy to clipboard operation
InfluxDB-MacOS-Desktop copied to clipboard

双击表的时候崩溃

Open cjoin opened this issue 2 years ago • 1 comments

最近我们在升级influxdb服务端版本,升级之后再用客户端时发现,在双击表的时候,程序崩溃。

通过抓包对比两个版本的请求记录,我发现对于旧版,会响应show filed keys from 的请求。而新版influxdb服务端则返回空。阅读源码后,怀疑是main.py:422/423循环处理show filed keys 的结果时没兼容返回为空的情况。

通过对比其他类似客户端(influxdb workBench,在它的逻辑里,建立连接后第一个请求是show databases,第二个请求是查询库中的表数据show measurements,之后即可开始查询数据,个人认为field keys 不是必要请求。建议兼容无field keys 的情况。

抓包查看的请求: http://localhost:8086/query?q=SHOW+FIELD+KEYS+FROM+%22table_name%22&db=db_name

旧版本服务端的返回(正常逻辑,不崩溃): { "results": [ { "statement_id": 0, "series": [ { "name": "table_name", "columns": [ "fieldKey", "fieldType" ], "values": [ [ "metrics||sendIntervalMs", "float" ], [ "sendTime", "float" ] ] } ] } ] }

新版本influxdb服务端的返回(异常逻辑,崩溃): { "results": [ { "statement_id": 0 } ] }

cjoin avatar Aug 30 '22 12:08 cjoin

我clone下代码,配置pyqt5的环境,在pycharm中调试程序,调试时对于main.py的419行 - 430行的意义不能理解,我不是很理解为什么要把tag key 和 field key添加到tables_name里。可看这个调试时的截图: image tables_name即我的这个数据库下拥有的7个表,而var是tagKey和fieldKey返回的数据,把他们加到tables_name中能有什么作用呢? 崩溃发生在426行,field_data是空的时候取0号元素。 目前我的解决方案是注释掉419行 - 430行的代码,软件能够正常运行,期望原作者能够解答一下我的疑惑,如果419行 - 430行确实没用,那就注释掉,修复bug

cjoin avatar Aug 31 '22 03:08 cjoin