mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-08 23:33:44 +08:00
fix: worker missing state
This commit is contained in:
@@ -499,7 +499,7 @@ func (b *Boomer) GetWorkersInfo() []WorkerNode {
|
|||||||
// GetMasterInfo gets master information
|
// GetMasterInfo gets master information
|
||||||
func (b *Boomer) GetMasterInfo() map[string]interface{} {
|
func (b *Boomer) GetMasterInfo() map[string]interface{} {
|
||||||
masterInfo := make(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["workers"] = b.masterRunner.server.getClientsLength()
|
||||||
masterInfo["target_users"] = b.masterRunner.getSpawnCount()
|
masterInfo["target_users"] = b.masterRunner.getSpawnCount()
|
||||||
return masterInfo
|
return masterInfo
|
||||||
|
|||||||
@@ -874,8 +874,11 @@ func (r *workerRunner) run() {
|
|||||||
}
|
}
|
||||||
r.updateState(StateInit)
|
r.updateState(StateInit)
|
||||||
}
|
}
|
||||||
if atomic.LoadInt32(&r.client.failCount) > 2 {
|
if atomic.LoadInt32(&r.client.failCount) > 3 {
|
||||||
r.updateState(StateMissing)
|
go r.stop()
|
||||||
|
if !r.isStarting() && !r.isStopping() {
|
||||||
|
r.updateState(StateMissing)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
CPUUsage := GetCurrentCPUPercent()
|
CPUUsage := GetCurrentCPUPercent()
|
||||||
MemoryUsage := GetCurrentMemoryPercent()
|
MemoryUsage := GetCurrentMemoryPercent()
|
||||||
@@ -1007,12 +1010,15 @@ func (r *masterRunner) heartbeatWorker() {
|
|||||||
if !ok {
|
if !ok {
|
||||||
log.Error().Msg("failed to get worker information")
|
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 {
|
if workerInfo.getState() != StateMissing {
|
||||||
workerInfo.setState(StateMissing)
|
workerInfo.setState(StateMissing)
|
||||||
}
|
}
|
||||||
if r.getState() == StateRunning {
|
if r.isStopping() {
|
||||||
// all running workers missed, stopping runner
|
// all running workers missed, setting state to stopped
|
||||||
if r.server.getClientsLength() <= 0 {
|
if r.server.getClientsLength() <= 0 {
|
||||||
r.updateState(StateStopped)
|
r.updateState(StateStopped)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user