fix: worker missing state

This commit is contained in:
徐聪
2022-07-15 17:47:19 +08:00
parent dce866c728
commit d7e56d285e
2 changed files with 12 additions and 6 deletions

View File

@@ -499,7 +499,7 @@ func (b *Boomer) GetWorkersInfo() []WorkerNode {
// GetMasterInfo gets master information
func (b *Boomer) GetMasterInfo() map[string]interface{} {
masterInfo := make(map[string]interface{})
masterInfo["state"] = getStateName(b.masterRunner.getState())
masterInfo["state"] = b.masterRunner.getState()
masterInfo["workers"] = b.masterRunner.server.getClientsLength()
masterInfo["target_users"] = b.masterRunner.getSpawnCount()
return masterInfo

View File

@@ -874,8 +874,11 @@ func (r *workerRunner) run() {
}
r.updateState(StateInit)
}
if atomic.LoadInt32(&r.client.failCount) > 2 {
r.updateState(StateMissing)
if atomic.LoadInt32(&r.client.failCount) > 3 {
go r.stop()
if !r.isStarting() && !r.isStopping() {
r.updateState(StateMissing)
}
}
CPUUsage := GetCurrentCPUPercent()
MemoryUsage := GetCurrentMemoryPercent()
@@ -1007,12 +1010,15 @@ func (r *masterRunner) heartbeatWorker() {
if !ok {
log.Error().Msg("failed to get worker information")
}
if atomic.LoadInt32(&workerInfo.Heartbeat) <= 0 {
if atomic.LoadInt32(&workerInfo.Heartbeat) < 0 {
if workerInfo.getState() == StateQuitting {
return true
}
if workerInfo.getState() != StateMissing {
workerInfo.setState(StateMissing)
}
if r.getState() == StateRunning {
// all running workers missed, stopping runner
if r.isStopping() {
// all running workers missed, setting state to stopped
if r.server.getClientsLength() <= 0 {
r.updateState(StateStopped)
}