les/flowcontrol: update buffer estimate after ResumeMsg

This commit is contained in:
Zsolt Felfoldi 2019-05-03 17:49:29 +02:00
parent 853d3f879e
commit f39c7a5d12
2 changed files with 23 additions and 0 deletions

View file

@ -396,6 +396,28 @@ func (node *ServerNode) ReceivedReply(reqID, bv uint64) {
} }
} }
// ResumeFreeze cleans all pending requests and sets the buffer estimate to the
// reported value after resuming from a frozen state
func (node *ServerNode) ResumeFreeze(bv uint64) {
node.lock.Lock()
defer node.lock.Unlock()
for reqID, _ := range node.pending {
delete(node.pending, reqID)
}
now := node.clock.Now()
node.recalcBLE(now)
if bv > node.params.BufLimit {
bv = node.params.BufLimit
}
node.bufEstimate = bv
node.bufRecharge = node.bufEstimate < node.params.BufLimit
node.lastTime = now
if node.log != nil {
node.log.add(now, fmt.Sprintf("unfreeze bv=%d sumCost=%d", bv, node.sumCost))
}
}
// DumpLogs dumps the event log if logging is used // DumpLogs dumps the event log if logging is used
func (node *ServerNode) DumpLogs() { func (node *ServerNode) DumpLogs() {
node.lock.Lock() node.lock.Lock()

View file

@ -1098,6 +1098,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
if err := msg.Decode(&bv); err != nil { if err := msg.Decode(&bv); err != nil {
return errResp(ErrDecode, "msg %v: %v", msg, err) return errResp(ErrDecode, "msg %v: %v", msg, err)
} }
p.fcServer.ResumeFreeze(bv)
p.freezeServer(false) p.freezeServer(false)
p.Log().Warn("Service resumed") p.Log().Warn("Service resumed")