- saveKnownNodes replaced the repeated pickle.dump
- with knownNodesLock instead of acquire/release
- outgoingSynSender had an unnecessary loop during shutdown causing
excessive CPU usage / GUI freezing
@ -90,28 +89,23 @@ class singleCleaner(threading.Thread, StoppableThread):
# cleanup old nodes
now=int(time.time())
toDelete=[]
knownnodes.knownNodesLock.acquire()
forstreaminknownnodes.knownNodes:
fornodeinknownnodes.knownNodes[stream].keys():
ifnow-knownnodes.knownNodes[stream][node]>2419200:# 28 days
shared.needToWriteKownNodesToDisk=True
delknownnodes.knownNodes[stream][node]
knownnodes.knownNodesLock.release()
withknownnodes.knownNodesLock:
forstreaminknownnodes.knownNodes:
fornodeinknownnodes.knownNodes[stream].keys():
ifnow-knownnodes.knownNodes[stream][node]>2419200:# 28 days
shared.needToWriteKownNodesToDisk=True
delknownnodes.knownNodes[stream][node]
# Let us write out the knowNodes to disk if there is anything new to write out.
ifshared.needToWriteKnownNodesToDisk:
knownnodes.knownNodesLock.acquire()
output=open(state.appdata+'knownnodes.dat','wb')
try:
pickle.dump(knownnodes.knownNodes,output)
output.close()
knownnodes.saveKnownNodes()
exceptExceptionaserr:
if"Errno 28"instr(err):
logger.fatal('(while receiveDataThread knownnodes.needToWriteKnownNodesToDisk) Alert: Your disk or data storage volume is full. ')
queues.UISignalQueue.put(('alert',(tr._translate("MainWindow","Disk full"),tr._translate("MainWindow",'Alert: Your disk or data storage volume is full. Bitmessage will now exit.'),True)))