matrix: "KeyError: 'leave'"
Connecting with the matrix-nio client module v0.18.4 or older causes issues when connecting to a matrix-synapse server v1.38 or later.
The sync
operation fails in this case:
grouprisectl matrix_commander
Traceback (most recent call last):
File "/usr/share/grouprise/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/usr/share/grouprise/python-lib/grouprise/features/matrix_commander/management/commands/matrix_commander.py", line 42, in handle
run_async(bot.serve_forever())
File "/usr/share/grouprise/python-lib/grouprise/core/utils.py", line 64, in run_async
return asyncio.run(async_func)
File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/usr/share/grouprise/python-lib/grouprise/features/matrix_commander/matrix_bot.py", line 67, in serve_forever
await self.client.sync()
File "/usr/lib/python3/dist-packages/nio/client/async_client.py", line 1003, in sync
response = await self._send(
File "/usr/lib/python3/dist-packages/nio/client/async_client.py", line 717, in _send
resp = await self.create_matrix_response(
File "/usr/lib/python3/dist-packages/nio/client/async_client.py", line 504, in create_matrix_response
resp = response_class.from_dict(parsed_dict, *data)
File "/usr/lib/python3/dist-packages/nio/responses.py", line 170, in wrapper
return f(cls, parsed_dict, *args, **kwargs)
File "/usr/lib/python3/dist-packages/nio/responses.py", line 1747, in from_dict
rooms = SyncResponse._get_room_info(parsed_dict["rooms"])
File "/usr/lib/python3/dist-packages/nio/responses.py", line 1695, in _get_room_info
for room_id, room_dict in parsed_dict["leave"].items():
KeyError: 'leave'
The issue is fixed in matrix-nio
in v0.18.5.
Deployments based on Debian Bullseye need to update thei python3-matrix-nio
package, e.g. by installing the version from testing
.