From 64448b373e83895e1d7a3b12bb7a801d240cb7fd Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Tue, 28 Sep 2021 22:00:04 -0500 Subject: [PATCH 1/5] Fix event context for outliers in important MSC2716 spot Fix event context for outlier causing failures in all of the MSC2716 Complement tests. The `EventContext.for_outlier` refactor happened in https://github.com/matrix-org/synapse/pull/10883 and this spot was left out. --- synapse/handlers/message.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index 07aadf3f3c94..a8cd8d994386 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -953,18 +953,13 @@ async def create_new_client_event( depth=depth, ) - old_state = None + context = await self.state.compute_event_context(event) # Pass on the outlier property from the builder to the event # after it is created if builder.internal_metadata.outlier: event.internal_metadata.outlier = builder.internal_metadata.outlier - - # Calculate the state for outliers that pass in their own `auth_event_ids` - if auth_event_ids: - old_state = await self.store.get_events_as_list(auth_event_ids) - - context = await self.state.compute_event_context(event, old_state=old_state) + context = EventContext.for_outlier() if requester: context.app_service = requester.app_service From f3174cdd0d383f1a95978bf6fcf3b7fa19e2c3fd Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Tue, 28 Sep 2021 22:16:39 -0500 Subject: [PATCH 2/5] Add changelog --- changelog.d/10938.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/10938.bugfix diff --git a/changelog.d/10938.bugfix b/changelog.d/10938.bugfix new file mode 100644 index 000000000000..afe6f2c6bf24 --- /dev/null +++ b/changelog.d/10938.bugfix @@ -0,0 +1 @@ +Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint not being able to create outlier events. From 6713a2ac2de08419485bae5f833c7d23bee937d3 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 29 Sep 2021 12:07:03 -0500 Subject: [PATCH 3/5] Update changelog.d/10938.bugfix Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- changelog.d/10938.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/10938.bugfix b/changelog.d/10938.bugfix index afe6f2c6bf24..9cf0ea8788b9 100644 --- a/changelog.d/10938.bugfix +++ b/changelog.d/10938.bugfix @@ -1 +1 @@ -Fix [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint not being able to create outlier events. +Fix bug introduced in Synapse 1.44 which caused the experimental [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) `/batch_send` endpoint to return a 500 error. From 97fa9a29e48b5ca708aa49e016b6148e61506199 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 29 Sep 2021 12:07:09 -0500 Subject: [PATCH 4/5] Update synapse/handlers/message.py Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- synapse/handlers/message.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index a8cd8d994386..b06ea440af09 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -958,7 +958,7 @@ async def create_new_client_event( # Pass on the outlier property from the builder to the event # after it is created if builder.internal_metadata.outlier: - event.internal_metadata.outlier = builder.internal_metadata.outlier + event.internal_metadata.outlier = True context = EventContext.for_outlier() if requester: From fa4f20dfb7446065e26f5f11715106aacb205128 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Wed, 29 Sep 2021 12:09:12 -0500 Subject: [PATCH 5/5] Only generate context when we need to (it's not free to throw away) --- synapse/handlers/message.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index b06ea440af09..d69eb32f4151 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -953,13 +953,13 @@ async def create_new_client_event( depth=depth, ) - context = await self.state.compute_event_context(event) - # Pass on the outlier property from the builder to the event # after it is created if builder.internal_metadata.outlier: event.internal_metadata.outlier = True context = EventContext.for_outlier() + else: + context = await self.state.compute_event_context(event) if requester: context.app_service = requester.app_service