Add a watchdog for the inbox thread

master
Bob Mottram 2019-09-02 22:52:43 +01:00
parent 9bdb0c007a
commit 5ca2b1c762
2 changed files with 19 additions and 3 deletions

View File

@ -47,6 +47,7 @@ from posts import expireCache
from inbox import inboxPermittedMessage
from inbox import inboxMessageHasParams
from inbox import runInboxQueue
from inbox import runInboxQueueWatchdog
from inbox import savePostToInboxQueue
from inbox import populateReplies
from follow import getFollowingFeed
@ -3264,7 +3265,7 @@ class PubServer(BaseHTTPRequestHandler):
class PubServerUnitTest(PubServer):
protocol_version = 'HTTP/1.0'
def runDaemon(projectVersion, \
instanceId,clientToServer: bool, \
baseDir: str,domain: str, \
@ -3377,7 +3378,10 @@ def runDaemon(projectVersion, \
httpd.ocapAlways,maxReplies, \
domainMaxPostsPerDay,accountMaxPostsPerDay, \
allowDeletion,debug,httpd.acceptedCaps),daemon=True)
httpd.thrInboxQueue.start()
httpd.thrWatchdog= \
threadWithTrace(target=runInboxQueueWatchdog, \
args=(projectVersion,httpd),daemon=True)
httpd.thrWatchdog.start()
if clientToServer:
print('Running ActivityPub client on ' + domain + ' port ' + str(proxyPort))
else:

View File

@ -1135,7 +1135,19 @@ def restoreQueueItems(baseDir: str,queue: []) -> None:
queue.append(os.path.join(queueDir, qfile))
if len(queue)>0:
print('Restored '+str(len(queue))+' inbox queue items')
def runInboxQueueWatchdog(projectVersion: str,httpd) -> None:
"""This tries to keep the inbox thread running even if it dies
"""
print('Starting inbox queue watchdog')
httpd.thrInboxQueue.start()
while True:
time.sleep(20)
if not httpd.thrInboxQueue.isAlive():
httpd.thrInboxQueue.kill()
httpd.thrInboxQueue.start()
print('Restarting inbox queue...')
def runInboxQueue(projectVersion: str, \
baseDir: str,httpPrefix: str,sendThreads: [],postLog: [], \
cachedWebfingers: {},personCache: {},queue: [], \