hive sql无法停止

排查流程

hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的

其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

同时,通过JDK动态代理为其织入了synchronized同步机制:其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

与此同时,原运行Hive的线程也在循环中通过客户端实例来获取该Hive SQL运行状态

而synchronized锁是非公平的,因此停止Hive线程客户端可能一直无法获取对象锁,从而无法进入停止流程。因此修改HiveStatement的JDK动态代理逻辑,改为使用ReentrantLock,并将其设置为公平锁,从而客户端获取锁序列为公平的,从而让停止线程能正常获取客户端实例锁进行操作。

解决方案

按照以上思路查询源码,在高版本和低版本的客户端中都有使用ReentrantLock作为对象锁的代码,选择以上版本的客户端版本即可

相关推荐
freejackman10 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
骑着蜗牛撵大象3271 天前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
android·数据库·sql·mysql·优化器·执行计划
zhengfei6112 天前
Go-fastdfs /reload 未授权访问: 有效PoC
数据库·sql
大维2 天前
DBX 实测:从 SQLite 查询到 MiniMax-M3 自然语言生成 SQL
数据库·sql·sqlite
skywalk81632 天前
hive 常驻集群:像 OSPF 一样在线,像 git 一样可信
运维·人工智能·hive
景煜拾年2 天前
InnoAI SQL 助手
运维·数据库·笔记·sql
Decay__3 天前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
Decay__3 天前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
挖掘狂人3 天前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
后端·sql·mysql
codigger3 天前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
数据库·sql·mysql·程序员