TarsCloud / TarsFramework

Tars Basic service framework
BSD 3-Clause "New" or "Revised" License
198 stars 143 forks source link

NodeServer中的KeepAlive判断错误导致启动多个相同进程 #94

Open flamefox opened 3 years ago

flamefox commented 3 years ago

https://github.com/TarsCloud/TarsFramework/blob/7e7f5583759e42a788e23e3310ba1313fc0461c8/NodeServer/KeepAliveThread.cpp#L316

这里判断使用的是KeepAliveThread的启动时间而不是具体的ServerObject的心跳时间 当具体的服务进程通过async_keepalive反馈自身信息时,就有可能没法满足这个条件,导致进程被重复启动.

似乎可以变成这样的代码就ok了?猜测这样,还没完成自测

if ((TNOW - pServerObjectPtr->getLastKeepAliveTime()) < (ServantHandle::HEART_BEAT_INTERVAL + 1))
tarscloudbot commented 3 years ago

欢迎pr~