mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-23 09:00:20 +08:00
feat: add ProcConf to make SetTimeToForceQuit configurable (#4446)
This commit is contained in:
parent
fcc246933c
commit
22a41cacc7
@ -13,16 +13,17 @@ import (
|
|||||||
"github.com/zeromicro/go-zero/core/threading"
|
"github.com/zeromicro/go-zero/core/threading"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
type ProcConf struct {
|
||||||
wrapUpTime = time.Second
|
WrapUpTime time.Duration `json:",default=1s"`
|
||||||
// why we use 5500 milliseconds is because most of our queue are blocking mode with 5 seconds
|
WaitTime time.Duration `json:",default=5.5s"`
|
||||||
waitTime = 5500 * time.Millisecond
|
}
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
wrapUpListeners = new(listenerManager)
|
wrapUpListeners = new(listenerManager)
|
||||||
shutdownListeners = new(listenerManager)
|
shutdownListeners = new(listenerManager)
|
||||||
delayTimeBeforeForceQuit = waitTime
|
wrapUpTime = time.Second
|
||||||
|
// why we use 5500 milliseconds is because most of our queue are blocking mode with 5 seconds
|
||||||
|
delayTimeBeforeForceQuit = 5500 * time.Millisecond
|
||||||
)
|
)
|
||||||
|
|
||||||
// AddShutdownListener adds fn as a shutdown listener.
|
// AddShutdownListener adds fn as a shutdown listener.
|
||||||
@ -42,6 +43,11 @@ func SetTimeToForceQuit(duration time.Duration) {
|
|||||||
delayTimeBeforeForceQuit = duration
|
delayTimeBeforeForceQuit = duration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Setup(conf ProcConf) {
|
||||||
|
wrapUpTime = conf.WrapUpTime
|
||||||
|
delayTimeBeforeForceQuit = conf.WaitTime
|
||||||
|
}
|
||||||
|
|
||||||
// Shutdown calls the registered shutdown listeners, only for test purpose.
|
// Shutdown calls the registered shutdown listeners, only for test purpose.
|
||||||
func Shutdown() {
|
func Shutdown() {
|
||||||
shutdownListeners.notifyListeners()
|
shutdownListeners.notifyListeners()
|
||||||
|
@ -95,3 +95,12 @@ func TestNotifyMoreThanOnce(t *testing.T) {
|
|||||||
t.Fatal("timeout, check error logs")
|
t.Fatal("timeout, check error logs")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetup(t *testing.T) {
|
||||||
|
Setup(ProcConf{
|
||||||
|
WrapUpTime: time.Second * 2,
|
||||||
|
WaitTime: time.Second * 30,
|
||||||
|
})
|
||||||
|
assert.Equal(t, time.Second*2, wrapUpTime)
|
||||||
|
assert.Equal(t, time.Second*30, delayTimeBeforeForceQuit)
|
||||||
|
}
|
||||||
|
@ -37,6 +37,7 @@ type (
|
|||||||
Prometheus prometheus.Config `json:",optional"`
|
Prometheus prometheus.Config `json:",optional"`
|
||||||
Telemetry trace.Config `json:",optional"`
|
Telemetry trace.Config `json:",optional"`
|
||||||
DevServer DevServerConfig `json:",optional"`
|
DevServer DevServerConfig `json:",optional"`
|
||||||
|
Proc proc.ProcConf `json:",optional"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -61,6 +62,7 @@ func (sc ServiceConf) SetUp() error {
|
|||||||
sc.Telemetry.Name = sc.Name
|
sc.Telemetry.Name = sc.Name
|
||||||
}
|
}
|
||||||
trace.StartAgent(sc.Telemetry)
|
trace.StartAgent(sc.Telemetry)
|
||||||
|
proc.Setup(sc.Proc)
|
||||||
proc.AddShutdownListener(func() {
|
proc.AddShutdownListener(func() {
|
||||||
trace.StopAgent()
|
trace.StopAgent()
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user