matrix-org / synapse

Synapse: Matrix homeserver written in Python/Twisted.
https://matrix-org.github.io/synapse
Apache License 2.0
11.79k stars 2.13k forks source link

Exception processing notifs – TypeError: 'dict_values' object does not support indexing #5049

Closed c7hm4r closed 4 years ago

c7hm4r commented 5 years ago

Description

An exception appreared in the journald log files and I did not recieve an email notification about a message to read.

Steps to reproduce

The exception was thrown 15 minutes after someone wrote a message to me. I cannot exclude that I was online at that time.

Exception processing notifs
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/storage/_base.py", line 460, in runWithConnection
    defer.returnValue(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1362, in returnValue
    raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return: {'before': {'event_ids': ['$15548990XXXXXXXX:dom0.dom2'], 'token': 't12-230'}, 'after': {'event_ids': ['$15548994YYYYYYYY:dom0.dom2'], 'token': 't14-233'}}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/storage/_base.py", line 418, in runInteraction
    defer.returnValue(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1362, in returnValue
    raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return: {'before': {'event_ids': ['$15548990XXXXXXXX:dom0.dom2'], 'token': 't12-230'}, 'after': {'event_ids': ['$15548994YYYYYYYY:dom0.dom2'], 'token': 't14-233'}}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/storage/stream.py", line 585, in get_events_around
    "end": results["after"]["token"],
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1362, in returnValue
    raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return: {'events_before': [<FrozenEvent event_id='$15548990XXXXXXXX:dom0.dom2', type='m.room.message', state_key='None'>], 'events_after': [<FrozenEvent event_id='$15548994YYYYYYYY:dom0.dom2', type='m.room.message', state_key='None'>], 'start': 't12-230', 'end': 't14-233'}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/push/mailer.py", line 274, in get_notif_vars
    defer.returnValue(ret)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1362, in returnValue
    raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return: {'link': 'https://dom2.dom0.dom2/#/room/!aBcDeFgHiJlMnNoPqR:dom0.dom2/$15548994ZZZZZZZZ:dom0.dom2', 'ts': 1554899406194, 'messages': [{'msgtype': 'm.text', 'is_historical': True, 'id': '$15548990XXXXXXXX:dom0.dom2', 'ts': 1554899057860, 'sender_name': 'ab', 'sender_avatar_url': None, 'sender_hash': 2222, 'format': None, 'body_text_html': Markup('Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonn'}, {'msgtype': 'm.text', 'is_historical': False, 'id': '$15548994ZZZZZZZZ:dom0.dom2', 'ts': 1554899406178, 'sender_name': 'cd', 'sender_avatar_url': 'mxc://dom0.dom2/AgqAUnoGGGGGGGGGGGGGGGG', 'sender_hash': 3333, 'format': None, 'body_text_html': Markup('Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne me'), 'body_text_plain': 'Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne me'}]}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
    result = g.send(result)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/push/mailer.py", line 249, in get_room_vars
    defer.returnValue(room_vars)
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/twisted/internet/defer.py", line 1362, in returnValue
    raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return: {'title': 'cd', 'hash': 3406, 'notifs': [{'link': 'https://dom2.dom0.dom2/#/room/!aBcDeFgHiJlMnNoPqR:dom0.dom2/$15548994aaaaaaaa:dom0.dom2', 'ts': 1554899434068, 'messages': [{'msgtype': 'm.text', 'is_historical': False, 'id': '$15548994YYYYYYYY:dom0.dom2', 'ts': 1554899428698, 'sender_name': 'cd', 'sender_avatar_url': 'mxc://dom0.dom2/AgqAUnoGGGGGGGGGGGGGGGG', 'sender_hash': 3333, 'format': None, 'body_text_html': Markup('Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem i'), 'body_text_plain': 'Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem i'}, {'msgtype': 'm.text', 'is_historical': False, 'id': '$15548994aaaaaaaa:dom0.dom2', 'ts': 1554899434047, 'sender_name': 'cd', 'sender_avatar_url': 'mxc://dom0.dom2/AgqAUnoGGGGGGGGGGGGGGGG', 'sender_hash': 3333, 'format': None, 'body_text_html': Markup('sit amet consectetur si'), 'body_text_plain': 'sit amet consectetur si'}]}, {'link': 'https://dom2.dom0.dom2/#/room/!aBcDeFgHiJlMnNoPqR:dom0.dom2/$15548994ZZZZZZZZ:dom0.dom2', 'ts': 1554899406194, 'messages': [{'msgtype': 'm.text', 'is_historical': True, 'id': '$15548990XXXXXXXX:dom0.dom2', 'ts': 1554899057860, 'sender_name': 'ab', 'sender_avatar_url': None, 'sender_hash': 2222, 'format': None, 'body_text_html': Markup('Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonne message! Une bonn'}, {'msgtype': 'm.text', 'is_historical': False, 'id': '$15548994ZZZZZZZZ:dom0.dom2', 'ts': 1554899406178, 'sender_name': 'cd', 'sender_avatar_url': 'mxc://dom0.dom2/AgqAUnoGGGGGGGGGGGGGGGG', 'sender_hash': 3333, 'format': None, 'body_text_html': Markup('Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne me'), 'body_text_plain': 'Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne message! Otre bonne me'}]}], 'invite': False, 'link': 'https://dom2.dom0.dom2/#/room/!aBcDeFgHiJlMnNoPqR:dom0.dom2'}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/venvs/matrix-synapse/lib/python3.6/site-packages/synapse/push/emailpusher.py", line 129, in _process
    yield self._unsafe_process()
TypeError: 'dict_values' object does not support indexing

Platform and version information

adi1 commented 5 years ago

This problem only happens with python3 and can be fixed by replacing descriptor_from_member_events(member_events.values()) with descriptor_from_member_events(list(member_events.values())) in the 2 locations in /synapse/push/mailer.py

I am not sure if this is the right way to fix it, or if has any unwanted side effects.

erikjohnston commented 5 years ago

Fixed in https://github.com/matrix-org/synapse/pull/5388