mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
les/flowcontrol: update buffer estimate after ResumeMsg
This commit is contained in:
parent
853d3f879e
commit
f39c7a5d12
2 changed files with 23 additions and 0 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue