diff --git a/src/communicator/__init__.py b/src/communicator/__init__.py index 0d7aabf9..c83c117e 100755 --- a/src/communicator/__init__.py +++ b/src/communicator/__init__.py @@ -64,6 +64,8 @@ class OnionrCommunicatorDaemon: self.kv.put('blockQueue', {}) self.kv.put('shutdown', False) self.kv.put('onlinePeers', []) + self.kv.put('currentDownloading', []) + self.kv.put('announceCache', {}) if config.get('general.offline_mode', False): self.isOnline = False @@ -92,16 +94,12 @@ class OnionrCommunicatorDaemon: # Peers merged to us. Don't add to db until we know they're reachable self.newPeers = [] self.announceProgress = {} - self.announceCache = {} self.generating_blocks = [] # amount of threads running by name, used to prevent too many self.threadCounts = {} - # list of blocks currently downloading - self.currentDownloading = [] - # timestamp when the last online node was seen self.lastNodeSeen = None diff --git a/src/communicatorutils/announcenode.py b/src/communicatorutils/announcenode.py index 743dafa9..f527da70 100755 --- a/src/communicatorutils/announcenode.py +++ b/src/communicatorutils/announcenode.py @@ -33,13 +33,13 @@ def announce_node(daemon): kv: "DeadSimpleKV" = daemon.shared_state.get_by_string("DeadSimpleKV") # Do not let announceCache get too large - if len(daemon.announceCache) >= 10000: - daemon.announceCache.popitem() + if len(kv.get('announceCache')) >= 10000: + kv.get('announceCache').popitem() if daemon.config.get('general.security_level', 0) == 0: # Announce to random online peers for i in kv.get('onlinePeers'): - if i not in daemon.announceCache and\ + if i not in kv.get('announceCache') and\ i not in daemon.announceProgress: peer = i break diff --git a/src/communicatorutils/downloadblocks/__init__.py b/src/communicatorutils/downloadblocks/__init__.py index 35474834..79b43061 100755 --- a/src/communicatorutils/downloadblocks/__init__.py +++ b/src/communicatorutils/downloadblocks/__init__.py @@ -47,7 +47,7 @@ def download_blocks_from_communicator(comm_inst: "OnionrCommunicatorDaemon"): """Use communicator instance to download blocks in the comms's queue""" blacklist = onionrblacklist.OnionrBlackList() kv: "DeadSimpleKV" = comm_inst.shared_state.get_by_string("DeadSimpleKV") - LOG_SKIP_COUNT = 50 # for how many iterations we skip logging the counter + LOG_SKIP_COUNT = 50 # for how many iterations we skip logging the counter count: int = 0 metadata_validation_result: bool = False # Iterate the block queue in the communicator @@ -68,13 +68,14 @@ def download_blocks_from_communicator(comm_inst: "OnionrCommunicatorDaemon"): # Exit loop if shutting down or offline, or disk allocation reached break # Do not download blocks being downloaded - if blockHash in comm_inst.currentDownloading: + if blockHash in kv.get('currentDownloading'): continue - if len(comm_inst.onlinePeers) == 0: + if len(kv.get('onlinePeers')) == 0: break - comm_inst.currentDownloading.append(blockHash) # So we can avoid concurrent downloading in other threads of same block + # So we can avoid concurrent downloading in other threads of same block + kv.get('currentDownloading').append(blockHash) if len(blockPeers) == 0: try: peerUsed = onlinepeers.pick_online_peer(comm_inst) @@ -165,5 +166,5 @@ def download_blocks_from_communicator(comm_inst: "OnionrCommunicatorDaemon"): count = 0 except KeyError: pass - comm_inst.currentDownloading.remove(blockHash) + kv.get('currentDownloading').remove(blockHash) comm_inst.decrementThreadCount('getBlocks')