mirror of
https://github.com/aljazceru/plugins.git
synced 2025-12-23 16:14:20 +01:00
summary: fix persistent peerstate zero leading window
This commit is contained in:
committed by
Christian Decker
parent
f4e3383ed6
commit
158a15110f
@@ -3,8 +3,8 @@ from datetime import datetime
|
||||
# ensure an rpc peer is added
|
||||
def addpeer(p, rpcpeer):
|
||||
pid = rpcpeer['id']
|
||||
if not pid in p.avail_peerstate:
|
||||
p.avail_peerstate[pid] = {
|
||||
if not pid in p.persist['peerstate']:
|
||||
p.persist['peerstate'][pid] = {
|
||||
'connected' : rpcpeer['connected'],
|
||||
'last_seen' : datetime.now() if rpcpeer['connected'] else None,
|
||||
'avail' : 1.0 if rpcpeer['connected'] else 0.0
|
||||
@@ -13,8 +13,8 @@ def addpeer(p, rpcpeer):
|
||||
|
||||
# exponetially smooth online/offline states of peers
|
||||
def trace_availability(p, rpcpeers):
|
||||
p.avail_count += 1
|
||||
leadwin = max(min(p.avail_window, p.avail_count * p.avail_interval), p.avail_interval)
|
||||
p.persist['availcount'] += 1
|
||||
leadwin = max(min(p.avail_window, p.persist['availcount'] * p.avail_interval), p.avail_interval)
|
||||
samples = leadwin / p.avail_interval
|
||||
alpha = 1.0 / samples
|
||||
beta = 1.0 - alpha
|
||||
@@ -24,9 +24,9 @@ def trace_availability(p, rpcpeers):
|
||||
addpeer(p, rpcpeer)
|
||||
|
||||
if rpcpeer['connected']:
|
||||
p.avail_peerstate[pid]['last_seen'] = datetime.now()
|
||||
p.avail_peerstate[pid]['connected'] = True
|
||||
p.avail_peerstate[pid]['avail'] = 1.0 * alpha + p.avail_peerstate[pid]['avail'] * beta
|
||||
p.persist['peerstate'][pid]['last_seen'] = datetime.now()
|
||||
p.persist['peerstate'][pid]['connected'] = True
|
||||
p.persist['peerstate'][pid]['avail'] = 1.0 * alpha + p.persist['peerstate'][pid]['avail'] * beta
|
||||
else:
|
||||
p.avail_peerstate[pid]['connected'] = False
|
||||
p.avail_peerstate[pid]['avail'] = 0.0 * alpha + p.avail_peerstate[pid]['avail'] * beta
|
||||
p.persist['peerstate'][pid]['connected'] = False
|
||||
p.persist['peerstate'][pid]['avail'] = 0.0 * alpha + p.persist['peerstate'][pid]['avail'] * beta
|
||||
|
||||
Reference in New Issue
Block a user