Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Fix deleting pushers when using sharded pushers. #9465

Merged
merged 3 commits into from
Feb 22, 2021

Conversation

erikjohnston
Copy link
Member

@erikjohnston erikjohnston commented Feb 22, 2021

remove_pushers_by_access_token has the following check:

if not self._pusher_shard_config.should_handle(self._instance_name, user_id):
return

The intent here was that we should ignore attempts to delete pushers on workers not responsible for that user's push. This is incorrect, as deleting pushers must happen on master. However, unless the pusher_instances config is set and non-empty ShardedWorkerHandlingConfig.should_handle(..) will always return true (for silly backwards compat reasons, which is fixed in a separate PR), and so the method ends up doing the right thing in that case.

Since our integration tests for workers doesn't use pusher_instances all the tests passed, even though they broke if that option was set.

We fix this by a) removing the condition and b) making remove_pusher hit master over replication when called on workers (I don't think anything on workers call it, but it seemed easier to just add support for it). We also replace the REMOVE_PUSHER replication command with a HTTP API (to make it reliable).

I'm planning on clearing out pushers that should have been deleted in a separate PR.

@erikjohnston erikjohnston force-pushed the erikj/fix_delte_pusher_worker branch from f4dae08 to a891cd6 Compare February 22, 2021 18:15
@erikjohnston erikjohnston requested a review from a team February 22, 2021 19:07
@clokep
Copy link
Member

clokep commented Feb 22, 2021

I'm planning on clearing out pushers that should have been deleted in a separate PR.

Will this be a background update / schema delta or something manual?

@erikjohnston
Copy link
Member Author

I'm planning on clearing out pushers that should have been deleted in a separate PR.

Will this be a background update / schema delta or something manual?

I'm assuming something automated, but haven't really gotten that far yet

Copy link
Member

@clokep clokep left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks fine! Do we need to update any tests for this (or will we be updating some sytests for this)?

@erikjohnston erikjohnston merged commit 66f4949 into develop Feb 22, 2021
@erikjohnston erikjohnston deleted the erikj/fix_delte_pusher_worker branch February 22, 2021 21:14
@erikjohnston
Copy link
Member Author

I think this looks fine! Do we need to update any tests for this (or will we be updating some sytests for this)?

#9466 picks it up, by removing the different code paths between sharded and non-sharded push set ups. Though maybe we should start running our worker mode sytests with sharded pushers?

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Mar 14, 2021
Synapse 1.29.0 (2021-03-08)
===========================

Note that synapse now expects an `X-Forwarded-Proto` header when used with a reverse proxy. Please see [UPGRADE.rst](UPGRADE.rst#upgrading-to-v1290) for more details on this change.


No significant changes.


Synapse 1.29.0rc1 (2021-03-04)
==============================

Features
--------

- Add rate limiters to cross-user key sharing requests. ([\#8957](matrix-org/synapse#8957))
- Add `order_by` to the admin API `GET /_synapse/admin/v1/users/<user_id>/media`. Contributed by @dklimpel. ([\#8978](matrix-org/synapse#8978))
- Add some configuration settings to make users' profile data more private. ([\#9203](matrix-org/synapse#9203))
- The `no_proxy` and `NO_PROXY` environment variables are now respected in proxied HTTP clients with the lowercase form taking precedence if both are present. Additionally, the lowercase `https_proxy` environment variable is now respected in proxied HTTP clients on top of existing support for the uppercase `HTTPS_PROXY` form and takes precedence if both are present. Contributed by Timothy Leung. ([\#9372](matrix-org/synapse#9372))
- Add a configuration option, `user_directory.prefer_local_users`, which when enabled will make it more likely for users on the same server as you to appear above other users. ([\#9383](matrix-org/synapse#9383), [\#9385](matrix-org/synapse#9385))
- Add support for regenerating thumbnails if they have been deleted but the original image is still stored. ([\#9438](matrix-org/synapse#9438))
- Add support for `X-Forwarded-Proto` header when using a reverse proxy. ([\#9472](matrix-org/synapse#9472), [\#9501](matrix-org/synapse#9501), [\#9512](matrix-org/synapse#9512), [\#9539](matrix-org/synapse#9539))


Bugfixes
--------

- Fix a bug where users' pushers were not all deleted when they deactivated their account. ([\#9285](matrix-org/synapse#9285), [\#9516](matrix-org/synapse#9516))
- Fix a bug where a lot of unnecessary presence updates were sent when joining a room. ([\#9402](matrix-org/synapse#9402))
- Fix a bug that caused multiple calls to the experimental `shared_rooms` endpoint to return stale results. ([\#9416](matrix-org/synapse#9416))
- Fix a bug in single sign-on which could cause a "No session cookie found" error. ([\#9436](matrix-org/synapse#9436))
- Fix bug introduced in v1.27.0 where allowing a user to choose their own username when logging in via single sign-on did not work unless an `idp_icon` was defined. ([\#9440](matrix-org/synapse#9440))
- Fix a bug introduced in v1.26.0 where some sequences were not properly configured when running `synapse_port_db`. ([\#9449](matrix-org/synapse#9449))
- Fix deleting pushers when using sharded pushers. ([\#9465](matrix-org/synapse#9465), [\#9466](matrix-org/synapse#9466), [\#9479](matrix-org/synapse#9479), [\#9536](matrix-org/synapse#9536))
- Fix missing startup checks for the consistency of certain PostgreSQL sequences. ([\#9470](matrix-org/synapse#9470))
- Fix a long-standing bug where the media repository could leak file descriptors while previewing media. ([\#9497](matrix-org/synapse#9497))
- Properly purge the event chain cover index when purging history. ([\#9498](matrix-org/synapse#9498))
- Fix missing chain cover index due to a schema delta not being applied correctly. Only affected servers that ran development versions. ([\#9503](matrix-org/synapse#9503))
- Fix a bug introduced in v1.25.0 where `/_synapse/admin/join/` would fail when given a room alias. ([\#9506](matrix-org/synapse#9506))
- Prevent presence background jobs from running when presence is disabled. ([\#9530](matrix-org/synapse#9530))
- Fix rare edge case that caused a background update to fail if the server had rejected an event that had duplicate auth events. ([\#9537](matrix-org/synapse#9537))


Improved Documentation
----------------------

- Update the example systemd config to propagate reloads to individual units. ([\#9463](matrix-org/synapse#9463))


Internal Changes
----------------

- Add documentation and type hints to `parse_duration`. ([\#9432](matrix-org/synapse#9432))
- Remove vestiges of `uploads_path` configuration setting. ([\#9462](matrix-org/synapse#9462))
- Add a comment about systemd-python. ([\#9464](matrix-org/synapse#9464))
- Test that we require validated email for email pushers. ([\#9496](matrix-org/synapse#9496))
- Allow python to generate bytecode for synapse. ([\#9502](matrix-org/synapse#9502))
- Fix incorrect type hints. ([\#9515](matrix-org/synapse#9515), [\#9518](matrix-org/synapse#9518))
- Add type hints to device and event report admin API. ([\#9519](matrix-org/synapse#9519))
- Add type hints to user admin API. ([\#9521](matrix-org/synapse#9521))
- Bump the versions of mypy and mypy-zope used for static type checking. ([\#9529](matrix-org/synapse#9529))
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants