From 56ac450aa2f2a5528374f3b88546f704c26c541f Mon Sep 17 00:00:00 2001 From: David Robertson Date: Wed, 2 Feb 2022 13:08:59 +0000 Subject: [PATCH 1/3] Fix losing incoming EDUs if debug logging enabled Fixes #11889. Homeservers should only be affected if the `synapse.8631_debug` logger was enabled for DEBUG mode. I am not sure if this merits a bugfix release: I think the logging can be disabled in config if anyone is affected? But it is still pretty bad. --- synapse/federation/transport/server/federation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/federation/transport/server/federation.py b/synapse/federation/transport/server/federation.py index 9c1ad5851f69..cb778367c0ce 100644 --- a/synapse/federation/transport/server/federation.py +++ b/synapse/federation/transport/server/federation.py @@ -113,7 +113,7 @@ async def on_PUT( device_list_updates = [ edu.content for edu in transaction_data.get("edus", []) - if edu.edu_type in DEVICE_UPDATE_EDUS + if edu.get("edu_type") in DEVICE_UPDATE_EDUS ] if device_list_updates: issue_8631_logger.debug( From e2c320a0076c9d5d0ded8b2c07ae36c09a969a59 Mon Sep 17 00:00:00 2001 From: David Robertson Date: Wed, 2 Feb 2022 13:15:19 +0000 Subject: [PATCH 2/3] Changelog --- changelog.d/11890.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/11890.bugfix diff --git a/changelog.d/11890.bugfix b/changelog.d/11890.bugfix new file mode 100644 index 000000000000..6b696692e332 --- /dev/null +++ b/changelog.d/11890.bugfix @@ -0,0 +1 @@ +Fix a bug introduced in Synapse 1.51.0rc1 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for `synapse.8631_debug`. \ No newline at end of file From 51305474045b375457286540872f0f078d54464b Mon Sep 17 00:00:00 2001 From: David Robertson Date: Wed, 2 Feb 2022 15:50:48 +0000 Subject: [PATCH 3/3] Don't expect the "edu_type" to be hashable --- synapse/federation/transport/server/federation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/federation/transport/server/federation.py b/synapse/federation/transport/server/federation.py index cb778367c0ce..d86dfede4e89 100644 --- a/synapse/federation/transport/server/federation.py +++ b/synapse/federation/transport/server/federation.py @@ -109,7 +109,7 @@ async def on_PUT( ) if issue_8631_logger.isEnabledFor(logging.DEBUG): - DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"} + DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"] device_list_updates = [ edu.content for edu in transaction_data.get("edus", [])