mirror of
https://github.com/go-kratos/kratos.git
synced 2025-01-26 03:52:12 +02:00
sync/pipeline: using timer replace ticker (#477)
This commit is contained in:
parent
04948fd5cc
commit
f2c6751ed4
@ -169,17 +169,18 @@ func (p *Pipeline) Close() (err error) {
|
|||||||
func (p *Pipeline) mergeproc(mirror bool, index int, ch <-chan *message) {
|
func (p *Pipeline) mergeproc(mirror bool, index int, ch <-chan *message) {
|
||||||
defer p.wait.Done()
|
defer p.wait.Done()
|
||||||
var (
|
var (
|
||||||
m *message
|
m *message
|
||||||
vals = make(map[string][]interface{}, p.config.MaxSize)
|
vals = make(map[string][]interface{}, p.config.MaxSize)
|
||||||
closed bool
|
closed bool
|
||||||
count int
|
count int
|
||||||
inteval = p.config.Interval
|
inteval = p.config.Interval
|
||||||
oldTicker = true
|
timeout = false
|
||||||
)
|
)
|
||||||
if index > 0 {
|
if index > 0 {
|
||||||
inteval = xtime.Duration(int64(index) * (int64(p.config.Interval) / int64(p.config.Worker)))
|
inteval = xtime.Duration(int64(index) * (int64(p.config.Interval) / int64(p.config.Worker)))
|
||||||
}
|
}
|
||||||
ticker := time.NewTicker(time.Duration(inteval))
|
timer := time.NewTimer(time.Duration(inteval))
|
||||||
|
defer timer.Stop()
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case m = <-ch:
|
case m = <-ch:
|
||||||
@ -193,12 +194,8 @@ func (p *Pipeline) mergeproc(mirror bool, index int, ch <-chan *message) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
case <-ticker.C:
|
case <-timer.C:
|
||||||
if oldTicker {
|
timeout = true
|
||||||
ticker.Stop()
|
|
||||||
ticker = time.NewTicker(time.Duration(p.config.Interval))
|
|
||||||
oldTicker = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
name := p.name
|
name := p.name
|
||||||
process := count
|
process := count
|
||||||
@ -215,8 +212,12 @@ func (p *Pipeline) mergeproc(mirror bool, index int, ch <-chan *message) {
|
|||||||
_metricChanLen.Set(float64(len(ch)), name, strconv.Itoa(index))
|
_metricChanLen.Set(float64(len(ch)), name, strconv.Itoa(index))
|
||||||
_metricCount.Add(float64(process), name, strconv.Itoa(index))
|
_metricCount.Add(float64(process), name, strconv.Itoa(index))
|
||||||
if closed {
|
if closed {
|
||||||
ticker.Stop()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if !timer.Stop() && !timeout {
|
||||||
|
<-timer.C
|
||||||
|
timeout = false
|
||||||
|
}
|
||||||
|
timer.Reset(time.Duration(p.config.Interval))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user