1
orange2023 2023-03-22 14:14:53 +08:00
任务线程异常退出了,那对应的 thread 就没有了呀,watch dog 也不会续期了
|
2
orange2023 2023-03-22 14:23:59 +08:00
@orange2023 如果你指的是 Redission 的话,watch dog 只是对于 Redisson instance 而言的,你需要自己处理代码中的异常行为。既任务线程出现异常,应该手动释放锁。
|
3
noble4cc OP @orange2023 是的 现在也是这么做的
我的疑问 Redisson 看门狗这种 如果任务线程异常退出 Redisson 的守护线程也会停止续期吗 目前看了下源码没找到 |
4
orange2023 2023-03-22 15:40:30 +08:00
@noble4cc google 了一下,Redisson 的守护线程不会停止续期。
想了一下,”任务线程异常退出,设法让 watch dog 感知“,可以加入心跳检测机制(或者语言本身可以获取特定线程的状态)。那么多长的“心跳”间隔算过期这件事,又是一个类似”加一个 30S 锁之后,解锁时可能任务还没执行完,加入 watch dog 自动续期”的问题。 |
5
noble4cc OP @orange2023 是的 我看了下源码 入参就一个线程 ID 内部也没判断线程是否存活之类的
网上也有类似的提问 解答一般是如果线程不存在了 进程一般也不存在了 就不会续期到时候就直接过期了 如果要实现完美些看来得再加个守护线程 监控这些工作线程的状态 如果发现不存活 直接上释放锁 不过这又增加了系统设计复杂度 感觉也没什么必要 |