open-falcon / falcon-plus

An open-source and enterprise-level monitoring system.
Apache License 2.0
7.26k stars 1.53k forks source link

修复 cmd/start.go isStarted() 函数超时判断无用BUG。 #892

Closed DukeAnn closed 4 years ago

DukeAnn commented 4 years ago

问题复现代码

package main

import (
    "fmt"
    "time"
)

var b bool

func main() {
    go setB()
    test()
}

func setB() {
    time.AfterFunc(10*time.Second, func() {
        fmt.Println("set true")
        b = true
    })
}

func test() bool {
    ticker := time.NewTicker(time.Millisecond * 100)
    defer ticker.Stop()
    //timeout := time.After(time.Second)
    for {
        select {
        case <-ticker.C:
            if IsRunning() {
                return true
            }
        case <-time.After(time.Second):
            fmt.Println("timeout")
            return false
        }
    }
}

func IsRunning() bool {
    //<-time.After(2 * time.Second)
    return b
}