From 83345a6d841ade252ac8a0f5761ffec7b0d48bf8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 22 May 2020 11:48:13 +0000 Subject: [PATCH] Clear inbox queue when full --- daemon.py | 4 +++- inbox.py | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/daemon.py b/daemon.py index 4e4ed2a63..9161cb418 100644 --- a/daemon.py +++ b/daemon.py @@ -64,6 +64,7 @@ from posts import createDirectMessagePost from posts import populateRepliesJson from posts import addToField from posts import expireCache +from inbox import clearQueueItems from inbox import inboxPermittedMessage from inbox import inboxMessageHasParams from inbox import runInboxQueue @@ -820,9 +821,10 @@ class PubServer(BaseHTTPRequestHandler): else: print('Queue: Inbox queue is full') self._503() - self.server.POSTbusy = False + clearQueueItems(self.server.baseDir, self.server.inboxQueue) if not self.server.restartInboxQueueInProgress: self.server.restartInboxQueue = True + self.server.POSTbusy = False return 2 # Convert the headers needed for signature verification to dict diff --git a/inbox.py b/inbox.py index a482c632d..3b7e7f8b1 100644 --- a/inbox.py +++ b/inbox.py @@ -2212,6 +2212,26 @@ def inboxAfterCapabilities(recentPostsCache: {}, maxRecentPosts: int, return True +def clearQueueItems(baseDir: str, queue: []) -> None: + """Clears the queue for each account and appends filenames + """ + ctr = 0 + queue.clear() + for subdir, dirs, files in os.walk(baseDir + '/accounts'): + for account in dirs: + queueDir = baseDir + '/accounts/' + account + '/queue' + if os.path.isdir(queueDir): + for queuesubdir, queuedirs, queuefiles in os.walk(queueDir): + for qfile in queuefiles: + try: + os.remove(os.path.join(queueDir, qfile)) + ctr += 1 + except BaseException: + pass + if ctr > 0: + print('Removed ' + str(ctr) + ' inbox queue items') + + def restoreQueueItems(baseDir: str, queue: []) -> None: """Checks the queue for each account and appends filenames """ @@ -2220,11 +2240,8 @@ def restoreQueueItems(baseDir: str, queue: []) -> None: for account in dirs: queueDir = baseDir + '/accounts/' + account + '/queue' if os.path.isdir(queueDir): - print('Searching inbox queue ' + queueDir) for queuesubdir, queuedirs, queuefiles in os.walk(queueDir): for qfile in queuefiles: - print('Adding inbox queue file ' + - os.path.join(queueDir, qfile)) queue.append(os.path.join(queueDir, qfile)) if len(queue) > 0: print('Restored ' + str(len(queue)) + ' inbox queue items')