Fix missing persistent connection messages (#68496)
* Be more proactive about returning module messages * Move message display to a function, and replace handling already in shutdown()
This commit is contained in:
parent
0fb5593abf
commit
5f6427b1fc
1 changed files with 21 additions and 3 deletions
|
@ -148,6 +148,8 @@ class ConnectionProcess(object):
|
|||
resp = self.srv.handle_request(data)
|
||||
signal.alarm(0)
|
||||
|
||||
display_messages(self.connection)
|
||||
|
||||
if log_messages:
|
||||
display.display("jsonrpc response: %s" % resp, log_only=True)
|
||||
|
||||
|
@ -197,9 +199,7 @@ class ConnectionProcess(object):
|
|||
self.sock.close()
|
||||
if self.connection:
|
||||
self.connection.close()
|
||||
if self.connection.get_option("persistent_log_messages"):
|
||||
for _level, message in self.connection.pop_messages():
|
||||
display.display(message, log_only=True)
|
||||
display_messages(self.connection)
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
|
@ -337,6 +337,24 @@ def main():
|
|||
sys.exit(rc)
|
||||
|
||||
|
||||
def display_messages(connection):
|
||||
# This should be handled elsewhere, but if this is the last task, nothing will
|
||||
# come back to collect the messages. So now each task will dump its own messages
|
||||
# to stdout before logging the response message. This may make some other
|
||||
# pop_messages calls redundant.
|
||||
for level, message in connection.pop_messages():
|
||||
if connection.get_option('persistent_log_messages') and level == "log":
|
||||
display.display(message, log_only=True)
|
||||
else:
|
||||
# These should be keyed by valid method names, but
|
||||
# fail gracefully just in case.
|
||||
display_method = getattr(display, level, None)
|
||||
if display_method:
|
||||
display_method(message)
|
||||
else:
|
||||
display.display((level, message))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
display = Display()
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue