From 2c1481859fb84ac2526ade95fea3c0275eca1a3a Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Mon, 27 Feb 2017 19:15:07 +0900 Subject: [PATCH] More verbose peer logging Force more reconnects. Restrict semaphore to 2. --- server/peers.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/server/peers.py b/server/peers.py index a085813..db568c9 100644 --- a/server/peers.py +++ b/server/peers.py @@ -25,7 +25,7 @@ import server.version as version PEERS_FILE = 'peers' PEER_GOOD, PEER_STALE, PEER_NEVER, PEER_BAD = range(4) -STALE_SECS = 86400 +STALE_SECS = 3600 #86400 WAKEUP_SECS = 300 @@ -216,7 +216,7 @@ class PeerManager(util.LoggedClass): self.irc = IRC(env, self) self.myselves = peers_from_env(env) # value is max outgoing connections at a time - self.semaphore = asyncio.BoundedSemaphore(value=8) + self.semaphore = asyncio.BoundedSemaphore(value=2) self.retry_event = asyncio.Event() # Peers have one entry per hostname. Once connected, the # ip_addr property is either None, an onion peer, or the @@ -228,6 +228,7 @@ class PeerManager(util.LoggedClass): self.tor_proxy = SocksProxy(env.tor_proxy_host, env.tor_proxy_port, loop=self.loop) self.import_peers() + self.conn_count = 0 def my_clearnet_peer(self): '''Returns the clearnet peer representing this server.''' @@ -469,6 +470,10 @@ class PeerManager(util.LoggedClass): if peer.bad or not pairs: self.maybe_forget_peer(peer) else: + peer.conn_count = self.conn_count + self.conn_count += 1 + self.log_info('preparing connection {:d} to {}' + .format(peer.conn_count, peer)) start = time.time() await self.semaphore.acquire() elapsed = time.time() - start @@ -512,9 +517,14 @@ class PeerManager(util.LoggedClass): else: self.set_connection_status(peer, False) self.semaphore.release() + self.log_info('connection {:d} to {} failed' + .format(peer.conn_count, peer)) def connection_lost(self, session): '''Called by the peer session when disconnected.''' + peer = session.peer + self.log_info('connection {:d} to {} closed' + .format(peer.conn_count, peer)) self.semaphore.release() def set_connection_status(self, peer, good):