Thanks, I'm copying what seems like the relevant info from mailman.log below. Sorry, I totally missed that log existed!
There's very little time delay from the moment I click to view the held messages and receiving the API error.
There is a non-zero count in the badge for the Held Messages tab. It shows "1" as expected.
[25/Feb/2021:09:28:14 -0800] "GET /3.1/lists/cpa-announcement@caltech.edu/held?count=0&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.2" [2021-02-25 09:28:14 -0800] [462] [ERROR] Socket error processing request. Traceback (most recent call last): File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle self.handle_request(listener, req, client, addr) File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 190, in handle_request util.reraise(*sys.exc_info()) File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/util.py", line 625, in reraise raise value File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper 18,1 Top raise value File "/opt/mailmanve/lib64/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper rtn = function(*args, **kws) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/wsgiapp.py", line 193, in __call__ return super().__call__(environ, start_response) File "falcon/api.py", line 274, in falcon.api.API.__call__ File "falcon/api.py", line 269, in falcon.api.API.__call__ File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 174, in on_get resource = self._make_collection(request) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/helpers.py", line 182, in _make_collection entries = [as_dict(resource) for resource in collection] File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/helpers.py", line 182, in <listcomp> entries = [as_dict(resource) for resource in collection] File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 164, in _resource_as_dict resource = self._make_resource(request.id) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/rest/post_moderation.py", line 76, in _make_resource msg = getUtility(IMessageStore).get_message_by_id(key) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper return function(args[0], config.db.store, *args[1:], **kws) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/model/messagestore.py", line 103, in get_message_by_id return self._get_message(row) File "/opt/mailmanve/lib64/python3.6/site-packages/mailman/model/messagestore.py", line 95, in _get_message with open(path, 'rb') as fp: FileNotFoundError: [Errno 2] No such file or directory: '/var/tmp/mailman/messages/XC/DU/XCDUNGGCTVSN7RGCW5F3WXM5T2WEHCCJ'