Closed gzncland closed 2 months ago
commit 9dc92eca7b81e49f2e2adec73679f581372e004a
9dc92eca7b81e49f2e2adec73679f581372e004a
原代码 stream.go
if trackCount == 0 { s.Warn("no tracks") if time.Since(s.StartTime) > timeout { lost = true s.action(ACTION_CLOSE) } continue } // ...
我在生产环境拉的国标PS流,由于PS流上来比较慢,会经常触发这一段代码。然后subscriber会出现一直增长的现象。之后我改成
if trackCount == 0 { s.Warn("no tracks") if time.Since(s.StartTime) > timeout { lost = true s.action(ACTION_CLOSE) } else { s.timeout.Reset(time.Second * 5) } continue }
在运行过程中subscriber一直增长的现象消失。请看看是不是存在这样一个bug
你是怎么想到写这行代码的,没看出来基于什么考虑
从代码上看起来如果time.Since(s.StartTime) < timeout没有命中,定时器就不会再重置,StreamState就不会再变化了; case <-s.timeout.C:和action函数每一个case都会重置定时器或将定时器停止,唯独这里没有重置,我想是不是漏了 —— 基于这样的考虑
time.Since(s.StartTime) < timeout
StreamState
case <-s.timeout.C:
action
看起来确实如此
在这个提交中修复
commit
9dc92eca7b81e49f2e2adec73679f581372e004a
原代码 stream.go
我在生产环境拉的国标PS流,由于PS流上来比较慢,会经常触发这一段代码。然后subscriber会出现一直增长的现象。之后我改成
在运行过程中subscriber一直增长的现象消失。请看看是不是存在这样一个bug