[#3310|Stats] Fix constant session status key warnings

Fixed logs flooded with:

    [WARNING ][deluge.core.core              :655 ] Session status key not valid: num_connections
    [WARNING ][deluge.core.core              :655 ] Session status key not valid: dht_cache_nodes
This commit is contained in:
iczero 2021-07-31 01:54:41 -07:00 committed by Calum Lind
parent 4b6c7d01b2
commit ea609cd3e0
1 changed files with 30 additions and 32 deletions

View File

@ -77,16 +77,34 @@ class Core(CorePluginBase):
self.length = self.config['length']
# self.stats = get_key(self.saved_stats, 'stats') or {}
self.stats_keys = ['peer.num_peers_half_open', 'dht.dht_node_cache']
self.add_stats(
# keys needed from core.get_session_status
self.stat_keys = [
'upload_rate',
'download_rate',
'dht_nodes',
'dht_cache_nodes',
'dht_torrents',
'num_peers',
'num_connections',
)
'dht.dht_nodes',
'dht.dht_node_cache',
'dht.dht_torrents',
'peer.num_peers_connected',
'peer.num_peers_half_open',
]
# collected statistics and functions to get them
self.stat_getters = {
'upload_rate': lambda s: s['upload_rate'],
'download_rate': lambda s: s['download_rate'],
'dht_nodes': lambda s: s['dht.dht_nodes'],
'dht_cache_nodes': lambda s: s['dht.dht_node_cache'],
'dht_torrents': lambda s: s['dht.dht_torrents'],
'num_peers': lambda s: s['peer.num_peers_connected'],
'num_connections': lambda s: s['peer.num_peers_connected']
+ s['peer.num_peers_half_open'],
}
# initialize stats object
for key in self.stat_getters.keys():
for i in self.intervals:
if key not in self.stats[i]:
self.stats[i][key] = []
self.update_stats()
@ -101,33 +119,13 @@ class Core(CorePluginBase):
self.save_timer.stop() if self.save_timer.running else None
self.save_stats()
def add_stats(self, *stats):
for stat in stats:
if stat not in self.stats_keys:
self.stats_keys.append(stat)
for i in self.intervals:
if stat not in self.stats[i]:
self.stats[i][stat] = []
def update_stats(self):
# Get all possible stats!
stats = {}
for key in self.stats_keys:
# try all keys we have, very inefficient but saves having to
# work out where a key comes from...
try:
stats.update(self.core.get_session_status([key]))
except AttributeError:
pass
stats['num_connections'] = (
stats['num_peers'] + stats['peer.num_peers_half_open']
)
stats['dht_cache_nodes'] = stats['dht.dht_node_cache']
stats.update(
self.core.get_config_values(
['max_download', 'max_upload', 'max_num_connections']
)
)
raw_stats = self.core.get_session_status(self.stat_keys)
for name, fn in self.stat_getters.items():
stats[name] = fn(raw_stats)
# status = self.core.session.status()
# for stat in dir(status):
# if not stat.startswith('_') and stat not in stats: