|
@ -54,8 +54,7 @@ class Controller(ServerBase): |
|
|
self.coin = env.coin |
|
|
self.coin = env.coin |
|
|
self.servers = {} |
|
|
self.servers = {} |
|
|
self.sessions = set() |
|
|
self.sessions = set() |
|
|
self.groups = set() |
|
|
self.cur_group = SessionGroup(0) |
|
|
self.cur_group = self._new_group(0) |
|
|
|
|
|
self.txs_sent = 0 |
|
|
self.txs_sent = 0 |
|
|
self.next_log_sessions = 0 |
|
|
self.next_log_sessions = 0 |
|
|
self.state = self.CATCHING_UP |
|
|
self.state = self.CATCHING_UP |
|
@ -297,11 +296,6 @@ class Controller(ServerBase): |
|
|
height) |
|
|
height) |
|
|
return self.header_cache[height] |
|
|
return self.header_cache[height] |
|
|
|
|
|
|
|
|
def _new_group(self, gid): |
|
|
|
|
|
group = SessionGroup(gid) |
|
|
|
|
|
self.groups.add(group) |
|
|
|
|
|
return group |
|
|
|
|
|
|
|
|
|
|
|
def add_session(self, session): |
|
|
def add_session(self, session): |
|
|
self.sessions.add(session) |
|
|
self.sessions.add(session) |
|
|
if (len(self.sessions) >= self.max_sessions |
|
|
if (len(self.sessions) >= self.max_sessions |
|
@ -313,7 +307,7 @@ class Controller(ServerBase): |
|
|
self.close_servers(['TCP', 'SSL']) |
|
|
self.close_servers(['TCP', 'SSL']) |
|
|
gid = int(session.start_time - self.start_time) // 900 |
|
|
gid = int(session.start_time - self.start_time) // 900 |
|
|
if self.cur_group.gid != gid: |
|
|
if self.cur_group.gid != gid: |
|
|
self.cur_group = self._new_group(gid) |
|
|
self.cur_group = SessionGroup(gid) |
|
|
return self.cur_group |
|
|
return self.cur_group |
|
|
|
|
|
|
|
|
def remove_session(self, session): |
|
|
def remove_session(self, session): |
|
@ -358,9 +352,8 @@ class Controller(ServerBase): |
|
|
if len(sessions) <= 5 and |
|
|
if len(sessions) <= 5 and |
|
|
sum(s.bw_charge for s in sessions) < bw_limit] |
|
|
sum(s.bw_charge for s in sessions) < bw_limit] |
|
|
if len(groups) > 1: |
|
|
if len(groups) > 1: |
|
|
new_group = groups.pop() |
|
|
new_group = groups[-1] |
|
|
for group in groups: |
|
|
for group in groups: |
|
|
self.groups.remove(group) |
|
|
|
|
|
for session in group_map[group]: |
|
|
for session in group_map[group]: |
|
|
session.group = new_group |
|
|
session.group = new_group |
|
|
|
|
|
|
|
@ -370,13 +363,14 @@ class Controller(ServerBase): |
|
|
|
|
|
|
|
|
def getinfo(self): |
|
|
def getinfo(self): |
|
|
'''A one-line summary of server state.''' |
|
|
'''A one-line summary of server state.''' |
|
|
|
|
|
group_map = self._group_map() |
|
|
return { |
|
|
return { |
|
|
'daemon': self.daemon.logged_url(), |
|
|
'daemon': self.daemon.logged_url(), |
|
|
'daemon_height': self.daemon.cached_height(), |
|
|
'daemon_height': self.daemon.cached_height(), |
|
|
'db_height': self.bp.db_height, |
|
|
'db_height': self.bp.db_height, |
|
|
'closing': len([s for s in self.sessions if s.is_closing()]), |
|
|
'closing': len([s for s in self.sessions if s.is_closing()]), |
|
|
'errors': sum(s.rpc.errors for s in self.sessions), |
|
|
'errors': sum(s.rpc.errors for s in self.sessions), |
|
|
'groups': len(self.groups), |
|
|
'groups': len(group_map), |
|
|
'logged': len([s for s in self.sessions if s.log_me]), |
|
|
'logged': len([s for s in self.sessions if s.log_me]), |
|
|
'paused': sum(s.paused for s in self.sessions), |
|
|
'paused': sum(s.paused for s in self.sessions), |
|
|
'pid': os.getpid(), |
|
|
'pid': os.getpid(), |
|
|