TCP connection not closing properly leading to dangling CLOSE_WAIT state and system overload
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 领域
- databases, networking
调研方向
使用 Python 3.10.15、databricks-sql-python 3.1.2、所示的 sql.connect 调用以及 netstat 重现这两种情况,以观察套接字状态。当连接在上下文管理器或显式 close 调用之后正确关闭、不存在被无限期保留的 CLOSE_WAIT 套接字,并且客户端资源得到释放时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Testcase 1
Python 3.10.15 (main, Sep 7 2024, 18:35:33) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from databricks import sql
>>> sql.__version__
'3.1.2'
>>> with sql.connect(server_hostname = "<HIDE>", http_path = "<HIDE>", access_token = "<HIDE>") as connection:
... with connection.cursor() as cursor:
... cursor.execute("select * from table")
... column_names = [desc[0] for desc in cursor.description]
... query_out = [dict(zip(column_names, row)) for row in cursor.fetchall()]
...
...
<databricks.sql.client.Cursor object at 0x7f88551c14e0>
>>> query_out
[{"sometime" : "something}]
On the sidelines, the network connection for this process (after with clause gets finished), remain in ESTABLISHED state and then moves to CLOSE_WAIT state indefinitely.
Every 1.0s: netstat -apn | grep 1070099 asinha-vm-ubuntu-20-04-1: Wed Nov 20 02:43:13 2024
tcp 25 0 10.5.220.4:58078 so:me:ip:add:443 CLOSE_WAIT 1070099/python3
Testcase 2
Python 3.10.15 (main, Sep 7 2024, 18:35:33) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from databricks import sql
>>> sql.__version__
'3.1.2'
>>> connection = sql.connect(server_hostname = "<HIDE>", http_path = "<HIDE>", access_token = "<HIDE>")
>>> ## at this point a TCP connection got made as ESTABLISHED state ##
>>> cursor = connection.cursor()
>>> cursor.execute("select * from table")
<databricks.sql.client.Cursor object at 0x7f9d65db26b0>
>>> column_names = [desc[0] for desc in cursor.description]
>>> query_out = [dict(zip(column_names, row)) for row in cursor.fetchall()]
>>> cursor.close()
>>> connection.close()
>>> # even after close being called, the connection remains in ESTABLISHED state (for a long time) and then finally moves to CLOSE_WAIT state, which never changes.
Every 1.0s: netstat -apn | grep 1074808 asinha-vm-ubuntu-20-04-1: Wed Nov 20 02:49:36 2024
tcp 25 0 10.5.220.4:53810 so:me:ip:add:443 CLOSE_WAIT 1074808/python3
Connections should be closed properly, and all client resources should be freed properly.
- 主要语言
- Python
- 星标
- 233
- 派生
- 152
- 平均合并
- 21 小时 5 分钟
- 30 天内合并 PR
- 10
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
databricks/databricks-sql-python 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 76/100
-
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 84/100
查看 databricks/databricks-sql-python 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
anthropics/skills#1811 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
speaches-ai/speaches#678 ·
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
datalayer/mcp-compose#42 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
conda-forge/spacy-feedstock#177 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
UKGovernmentBEIS/inspect_evals#2523 ·