Add a message ID on each to-device message#2938
Conversation
To make it easier to track down where to-device messages are getting lost, add a custom property to each one, and log its value. Synapse will also log this property.
... because apparently more recent versions are too esm-ed for the embedded build
89550f7 to
a100e33
Compare
robintown
left a comment
There was a problem hiding this comment.
Greatly appreciated, I do wonder though if there's a more foolproof way of doing this such that IDs don't have to be sprinkled throughout the SDK. Would it be possible to insert the ID in MatrixClient.sendToDevice?
| .when("PUT", "/sendToDevice/m.room.encrypted") | ||
| .check((request) => { | ||
| const data = request.data; | ||
| delete data.messages["@bob:example.org"]["bobweb"]["org.matrix.msgid"]; |
There was a problem hiding this comment.
Alternatively you can use "org.matrix.msgid": expect.any(String) in the expect statement
Well, it turns out that actually breaks some to-device messages (in particular, some of those used in verification), because it breaks their signatures, so I don't think that would be a good approach. Also, for messages that go via the queue, we want to assign IDs to messages before they are queued, to make sure we can trace them right through. I do agree though, it feels very repetitive and boilerplatey. I considered some sort of |
#2938 introduced message IDs on outgoing to-device messages, but a typo meant that the IDs on key-share messages were excessive.
#2938 introduced message IDs on outgoing to-device messages, but a typo meant that the IDs on key-share messages were excessive.
* Process `m.room.encryption` events before emitting `RoomMember` events ([\matrix-org#2914](matrix-org#2914)). Fixes element-hq/element-web#23819. * Don't expose `calls` on `GroupCall` ([\matrix-org#2941](matrix-org#2941)). * Support MSC3391: Account data deletion ([\matrix-org#2967](matrix-org#2967)). * Add a message ID on each to-device message ([\matrix-org#2938](matrix-org#2938)). * Enable multiple users' power levels to be set at once ([\matrix-org#2892](matrix-org#2892)). Contributed by @GoodGuyMarco. * Include pending events in thread summary and count again ([\matrix-org#2922](matrix-org#2922)). Fixes element-hq/element-web#23642. * Make GroupCall work better with widgets ([\matrix-org#2935](matrix-org#2935)). * Add method to get outgoing room key requests for a given event ([\matrix-org#2930](matrix-org#2930)). * Fix messages loaded during initial fetch ending up out of order ([\matrix-org#2971](matrix-org#2971)). Fixes element-hq/element-web#23972. * Fix #23919: Root message for new thread loaded from network ([\matrix-org#2965](matrix-org#2965)). Fixes element-hq/element-web#23919. * Fix #23916: Prevent edits of the last message in a thread getting lost ([\matrix-org#2951](matrix-org#2951)). Fixes element-hq/element-web#23916 and element-hq/element-web#23942. * Fix infinite loop when restoring cached read receipts ([\matrix-org#2963](matrix-org#2963)). Fixes element-hq/element-web#23951. * Don't swallow errors coming from the shareSession call ([\matrix-org#2962](matrix-org#2962)). Fixes element-hq/element-web#23792. * Make sure that MegolmEncryption.setupPromise always resolves ([\matrix-org#2960](matrix-org#2960)). * Do not calculate highlight notifs for threads unknown to the room ([\matrix-org#2957](matrix-org#2957)). * Cache read receipts for unknown threads ([\matrix-org#2953](matrix-org#2953)). * bugfix: sliding sync initial room timelines shouldn't notify ([\matrix-org#2933](matrix-org#2933)). * Redo key sharing after own device verification ([\matrix-org#2921](matrix-org#2921)). Fixes element-hq/element-web#23333. * Move updated threads to the end of the thread list ([\matrix-org#2923](matrix-org#2923)). Fixes element-hq/element-web#23876. * Fix highlight notifications increasing when total notification is zero ([\matrix-org#2937](matrix-org#2937)). Fixes element-hq/element-web#23885. * Fix synthesizeReceipt ([\matrix-org#2916](matrix-org#2916)). Fixes element-hq/element-web#23827 element-hq/element-web#23754 and element-hq/element-web#23847.
To make it easier to track down where to-device messages are getting lost,
add a custom property to each one, and log its value. Synapse will also log
this property.
We will emit log lines such as:
and
part of element-hq/element-meta#558
See also matrix-org/synapse#14598 for the server side bits.
Here's what your changelog entry will look like:
✨ Features