Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Allow modules to create and send events into rooms (#8479) | Andrew Morgan | 2020-10-09 | 1 | -6/+5 |
| | | | | | This PR allows Synapse modules making use of the `ModuleApi` to create and send non-membership events into a room. This can useful to have modules send messages, or change power levels in a room etc. Note that they must send event through a user that's already in the room. The non-membership event limitation is currently arbitrary, as it's another chunk of work and not necessary at the moment. | ||||
* | Remove the deprecated Handlers object (#8494) | Patrick Cloke | 2020-10-09 | 1 | -2/+2 |
| | | | All handlers now available via get_*_handler() methods on the HomeServer. | ||||
* | update wording | Richard van der Hoff | 2020-10-07 | 1 | -2/+3 |
| | |||||
* | kill off `send_nonmember_event` | Richard van der Hoff | 2020-10-05 | 1 | -49/+25 |
| | | | | This is now redundant, and we can just call `handle_new_client_event` directly. | ||||
* | pull up event.sender assertion | Richard van der Hoff | 2020-10-05 | 1 | -4/+4 |
| | |||||
* | Move shadow-ban check down into `handle_new_client_event`. | Richard van der Hoff | 2020-10-05 | 1 | -8/+24 |
| | |||||
* | De-duplicate duplicate handling | Richard van der Hoff | 2020-10-05 | 1 | -18/+23 |
| | | | | | move the "duplicate state event" handling down into `handle_new_client_event` where it can be shared between multiple call paths. | ||||
* | Remove stream ordering from Metadata dict (#8452) | Richard van der Hoff | 2020-10-05 | 1 | -1/+3 |
| | | | | | | | | There's no need for it to be in the dict as well as the events table. Instead, we store it in a separate attribute in the EventInternalMetadata object, and populate that on load. This means that we can rely on it being correctly populated for any event which has been persited to the database. | ||||
* | Add EventStreamPosition type (#8388) | Erik Johnston | 2020-09-24 | 1 | -3/+3 |
| | | | | | | | | | | | | | | The idea is to remove some of the places we pass around `int`, where it can represent one of two things: 1. the position of an event in the stream; or 2. a token that partitions the stream, used as part of the stream tokens. The valid operations are then: 1. did a position happen before or after a token; 2. get all events that happened before or after a token; and 3. get all events between two tokens. (Note that we don't want to allow other operations as we want to change the tokens to be vector clocks rather than simple ints) | ||||
* | Factor out `_send_dummy_event_for_room` (#8370) | Richard van der Hoff | 2020-09-23 | 1 | -48/+54 |
| | | | this makes it possible to use from the manhole, and seems cleaner anyway. | ||||
* | Add experimental support for sharding event persister. Again. (#8294) | Erik Johnston | 2020-09-14 | 1 | -6/+8 |
| | | | | | | This is *not* ready for production yet. Caveats: 1. We should write some tests... 2. The stream token that we use for events can get stalled at the minimum position of all writers. This means that new events may not be processed and e.g. sent down sync streams if a writer isn't writing or is slow. | ||||
* | Make `StreamToken.room_key` be a `RoomStreamToken` instance. (#8281) | Erik Johnston | 2020-09-11 | 1 | -0/+1 |
| | |||||
* | Clean up `Notifier.on_new_room_event` code path (#8288) | Erik Johnston | 2020-09-10 | 1 | -4/+0 |
| | | | | | | | | | | | | | The idea here is that we pass the `max_stream_id` to everything, and only use the stream ID of the particular event to figure out *when* the max stream position has caught up to the event and we can notify people about it. This is to maintain the distinction between the position of an item in the stream (i.e. event A has stream ID 513) and a token that can be used to partition the stream (i.e. give me all events after stream ID 352). This distinction becomes important when the tokens are more complicated than a single number, which they will be once we start tracking the position of multiple writers in the tokens. The valid operations here are: 1. Is a position before or after a token 2. Fetching all events between two tokens 3. Merging multiple tokens to get the "max", i.e. `C = max(A, B)` means that for all positions P where P is before A *or* before B, then P is before C. Future PR will change the token type to a dedicated type. | ||||
* | Fixup pusher pool notifications (#8287) | Erik Johnston | 2020-09-09 | 1 | -1/+1 |
| | | | | | `pusher_pool.on_new_notifications` expected a min and max stream ID, however that was not what we were passing in. Instead, let's just pass it the current max stream ID and have it track the last stream ID it got passed. I believe that it mostly worked as we called the function for every event. However, it would break for events that got persisted out of order, i.e, that were persisted but the max stream ID wasn't incremented as not all preceding events had finished persisting, and push for that event would be delayed until another event got pushed to the effected users. | ||||
* | Revert "Fixup pusher pool notifications" | Erik Johnston | 2020-09-09 | 1 | -1/+1 |
| | | | | This reverts commit e7fd336a53a4ca489cdafc389b494d5477019dc0. | ||||
* | Fixup pusher pool notifications | Erik Johnston | 2020-09-09 | 1 | -1/+1 |
| | |||||
* | Stop sub-classing object (#8249) | Patrick Cloke | 2020-09-04 | 1 | -2/+2 |
| | |||||
* | Revert "Add experimental support for sharding event persister. (#8170)" (#8242) | Brendan Abolivier | 2020-09-04 | 1 | -8/+6 |
| | | | | | | | * Revert "Add experimental support for sharding event persister. (#8170)" This reverts commit 82c1ee1c22a87b9e6e3179947014b0f11c0a1ac3. * Changelog | ||||
* | Add experimental support for sharding event persister. (#8170) | Erik Johnston | 2020-09-02 | 1 | -6/+8 |
| | | | | | | This is *not* ready for production yet. Caveats: 1. We should write some tests... 2. The stream token that we use for events can get stalled at the minimum position of all writers. This means that new events may not be processed and e.g. sent down sync streams if a writer isn't writing or is slow. | ||||
* | Convert additional databases to async/await part 2 (#8200) | Patrick Cloke | 2020-09-01 | 1 | -10/+3 |
| | |||||
* | Remove unused parameter from, and add safeguard in, get_room_data (#8174) | Andrew Morgan | 2020-08-26 | 1 | -8/+12 |
| | | | | | | Small cleanup PR. * Removed the unused `is_guest` argument * Added a safeguard to a (currently) impossible code path, fixing static checking at the same time. | ||||
* | Do not allow send_nonmember_event to be called with shadow-banned users. (#8158) | Patrick Cloke | 2020-08-25 | 1 | -5/+34 |
| | |||||
* | Stop shadow-banned users from sending non-member events. (#8142) | Patrick Cloke | 2020-08-24 | 1 | -0/+10 |
| | |||||
* | Be stricter about JSON that is accepted by Synapse (#8106) | Patrick Cloke | 2020-08-19 | 1 | -2/+3 |
| | |||||
* | Convert events worker database to async/await. (#8071) | Patrick Cloke | 2020-08-18 | 1 | -3/+3 |
| | |||||
* | Fix the return type of send_nonmember_events. (#8112) | Patrick Cloke | 2020-08-18 | 1 | -1/+1 |
| | |||||
* | Return the previous stream token if a non-member event is a duplicate. (#8093) | Patrick Cloke | 2020-08-18 | 1 | -10/+15 |
| | |||||
* | Run `remove_push_actions_from_staging` in foreground (#8081) | Richard van der Hoff | 2020-08-13 | 1 | -3/+1 |
| | | | | | | | If we got an error persisting an event, we would try to remove the push actions asynchronously, which would lead to a 'Re-starting finished log context' warning. I don't think there's any need for this to be asynchronous. | ||||
* | Add type hints to handlers.message and events.builder (#8067) | Erik Johnston | 2020-08-12 | 1 | -9/+13 |
| | |||||
* | Add an assertion on prev_events in create_new_client_event (#8041) | Richard van der Hoff | 2020-08-10 | 1 | -0/+9 |
| | | | | | | I think this would have caught all the cases in https://github.com/matrix-org/synapse/issues/7642 - and I think a 500 makes more sense here than a 403 | ||||
* | Convert synapse.api to async/await (#8031) | Patrick Cloke | 2020-08-06 | 1 | -1/+1 |
| | |||||
* | Rename database classes to make some sense (#8033) | Erik Johnston | 2020-08-05 | 1 | -1/+1 |
| | |||||
* | Remove hacky error handling for inlineDeferreds. (#7950) | Patrick Cloke | 2020-07-27 | 1 | -12/+7 |
| | |||||
* | Convert the message handler to async/await. (#7884) | Patrick Cloke | 2020-07-22 | 1 | -136/+152 |
| | |||||
* | Convert _base, profile, and _receipts handlers to async/await (#7860) | Patrick Cloke | 2020-07-17 | 1 | -2/+6 |
| | |||||
* | Generate real events when we reject invites (#7804) | Richard van der Hoff | 2020-07-09 | 1 | -7/+16 |
| | | | | | | | | Fixes #2181. The basic premise is that, when we fail to reject an invite via the remote server, we can generate our own out-of-band leave event and persist it as an outlier, so that we have something to send to the client. | ||||
* | Convert directory handler to async/await (#7727) | Patrick Cloke | 2020-06-22 | 1 | -1/+3 |
| | |||||
* | Replace all remaining six usage with native Python 3 equivalents (#7704) | Dagfinn Ilmari Mannsåker | 2020-06-16 | 1 | -3/+1 |
| | |||||
* | Replace iteritems/itervalues/iterkeys with native versions. (#7692) | Patrick Cloke | 2020-06-15 | 1 | -4/+4 |
| | |||||
* | Performance improvements and refactor of Ratelimiter (#7595) | Andrew Morgan | 2020-06-05 | 1 | -1/+0 |
| | | | | | | | | | | While working on https://github.com/matrix-org/synapse/issues/5665 I found myself digging into the `Ratelimiter` class and seeing that it was both: * Rather undocumented, and * causing a *lot* of config checks This PR attempts to refactor and comment the `Ratelimiter` class, as well as encourage config file accesses to only be done at instantiation. Best to be reviewed commit-by-commit. | ||||
* | Optimise some references to hs.config (#7546) | Richard van der Hoff | 2020-05-22 | 1 | -3/+5 |
| | | | These are surprisingly expensive, and we only really need to do them at startup. | ||||
* | Add option to move event persistence off master (#7517) | Erik Johnston | 2020-05-22 | 1 | -5/+7 |
| | |||||
* | Add ability to wait for replication streams (#7542) | Erik Johnston | 2020-05-22 | 1 | -11/+25 |
| | | | | | | | The idea here is that if an instance persists an event via the replication HTTP API it can return before we receive that event over replication, which can lead to races where code assumes that persisting an event immediately updates various caches (e.g. current state of the room). Most of Synapse doesn't hit such races, so we don't do the waiting automagically, instead we do so where necessary to avoid unnecessary delays. We may decide to change our minds here if it turns out there are a lot of subtle races going on. People probably want to look at this commit by commit. | ||||
* | Omit displayname or avatar_url if they aren't set instead of returning null ↵ | Aaron Raimist | 2020-05-19 | 1 | -2/+6 |
| | | | | | | | | | (#7497) Per https://github.com/matrix-org/matrix-doc/issues/1436#issuecomment-410089470 they should be omitted instead of returning null or "". They aren't marked as required in the spec. Fixes https://github.com/matrix-org/synapse/issues/7333 Signed-off-by: Aaron Raimist <aaron@raim.ist> | ||||
* | Allow censoring of events to happen on workers. (#7492) | Erik Johnston | 2020-05-13 | 1 | -2/+0 |
| | | | This is safe as we can now write to cache invalidation stream on workers, and is required for when we move event persistence off master. | ||||
* | Add a configuration setting for the dummy event threshold (#7422) | Brendan Abolivier | 2020-05-07 | 1 | -1/+3 |
| | | | Add dummy_events_threshold which allows configuring the number of forward extremities a room needs for Synapse to send forward extremities in it. | ||||
* | async/await is_server_admin (#7363) | Andrew Morgan | 2020-05-01 | 1 | -44/+39 |
| | |||||
* | Use the proper error code when a canonical alias that does not exist is ↵ | Patrick Cloke | 2020-03-23 | 1 | -19/+38 |
| | | | | used. (#7109) | ||||
* | Don't filter out dummy events when we're checking the visibility of state | Brendan Abolivier | 2020-03-11 | 1 | -1/+1 |
| | |||||
* | Validate the alt_aliases property of canonical alias events (#6971) | Patrick Cloke | 2020-03-03 | 1 | -3/+44 |
| | |||||
* | Port PresenceHandler to async/await (#6991) | Erik Johnston | 2020-02-26 | 1 | -3/+2 |
| | |||||
* | Add `allow_departed_users` param to `check_in_room_or_world_readable` | Richard van der Hoff | 2020-02-19 | 1 | -4/+8 |
| | | | | | | | ... and set it everywhere it's called. while we're here, rename it for consistency with `check_user_in_room` (and to help check that I haven't missed any instances) | ||||
* | make FederationHandler.send_invite async | Richard van der Hoff | 2020-02-03 | 1 | -3/+2 |
| | |||||
* | s/get_room_version/get_room_version_id/ | Richard van der Hoff | 2020-01-31 | 1 | -3/+5 |
| | | | | | ... to make way for a forthcoming get_room_version which returns a RoomVersion object. | ||||
* | Pass room version object into event_auth.check and check_redaction (#6788) | Richard van der Hoff | 2020-01-28 | 1 | -2/+6 |
| | | | | | | | These are easier to work with than the strings and we normally have one around. This fixes `FederationHander._persist_auth_tree` which was passing a RoomVersion object into event_auth.check instead of a string. | ||||
* | Remove unused hashes and depths from create_event params | Richard van der Hoff | 2020-01-06 | 1 | -16/+5 |
| | |||||
* | Remove unused hashes and depths from create_new_client_event params | Richard van der Hoff | 2020-01-06 | 1 | -12/+14 |
| | |||||
* | replace get_prev_events_and_hashes_for_room with get_prev_events_for_room in ↵ | Richard van der Hoff | 2020-01-06 | 1 | -9/+3 |
| | | | | create_new_client_event | ||||
* | rename get_prev_events_for_room to get_prev_events_and_hashes_for_room | Richard van der Hoff | 2020-01-06 | 1 | -2/+4 |
| | | | | ... to make way for a new method which just returns the event ids | ||||
* | Change EventContext to use the Storage class (#6564) | Erik Johnston | 2019-12-20 | 1 | -5/+5 |
| | |||||
* | Prevent redacted events from appearing in message search (#6377) | Andrew Morgan | 2019-12-11 | 1 | -2/+3 |
| | |||||
* | Pull out room_invite_state_types config option once. | Erik Johnston | 2019-12-09 | 1 | -1/+3 |
| | | | | Pulling things out of config is currently surprisingly expensive. | ||||
* | Add ephemeral messages support (MSC2228) (#6409) | Brendan Abolivier | 2019-12-03 | 1 | -1/+122 |
| | | | | | | | | Implement part [MSC2228](https://github.com/matrix-org/matrix-doc/pull/2228). The parts that differ are: * the feature is hidden behind a configuration flag (`enable_ephemeral_messages`) * self-destruction doesn't happen for state events * only implement support for the `m.self_destruct_after` field (not the `m.self_destruct` one) * doesn't send synthetic redactions to clients because for this specific case we consider the clients to be able to destroy an event themselves, instead we just censor it (by pruning its JSON) in the database | ||||
* | Discard retention policies when retrieving state | Brendan Abolivier | 2019-11-28 | 1 | -1/+1 |
| | | | | | | | | Purge jobs don't delete the latest event in a room in order to keep the forward extremity and not break the room. On the other hand, get_state_events, when given an at_token argument calls filter_events_for_client to know if the user can see the event that matches that (sync) token. That function uses the retention policies of the events it's given to filter out those that are too old from a client's view. Some clients, such as Riot, when loading a room, request the list of members for the latest sync token it knows about, and get confused to the point of refusing to send any message if the server tells it that it can't get that information. This can happen very easily with the message retention feature turned on and a room with low activity so that the last event sent becomes too old according to the room's retention policy. An easy and clean fix for that issue is to discard the room's retention policies when retrieving state. | ||||
* | Implement per-room message retention policies | Brendan Abolivier | 2019-11-04 | 1 | -2/+2 |
| | |||||
* | Update black to 19.10b0 (#6304) | Amber Brown | 2019-11-01 | 1 | -6/+8 |
| | | | * update version of black and also fix the mypy config being overridden | ||||
* | Merge pull request #6294 from matrix-org/erikj/add_state_storage | Erik Johnston | 2019-10-31 | 1 | -4/+6 |
|\ | | | | | Add StateGroupStorage interface | ||||
| * | Port to use state storage | Erik Johnston | 2019-10-30 | 1 | -4/+6 |
| | | |||||
* | | Remove usage of deprecated logger.warn method from codebase (#6271) | Andrew Morgan | 2019-10-31 | 1 | -1/+1 |
|/ | | | Replace every instance of `logger.warn` with `logger.warning` as the former is deprecated. | ||||
* | Use new EventPersistenceStore | Erik Johnston | 2019-10-23 | 1 | -1/+2 |
| | |||||
* | Fix dummy event insertion consent bug (#6053) | Neil Johnson | 2019-09-26 | 1 | -27/+72 |
| | | | Fixes #5905 | ||||
* | Fix comments | Erik Johnston | 2019-09-11 | 1 | -1/+1 |
| | | | Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | ||||
* | Fix how we check for self redaction | Erik Johnston | 2019-09-11 | 1 | -4/+18 |
| | |||||
* | Allow use of different ratelimits for admin redactions. | Erik Johnston | 2019-09-11 | 1 | -1/+7 |
| | | | | | This is useful to allow room admins to quickly deal with a large number of abusive messages. | ||||
* | Apply suggestions from code review | Will Hunt | 2019-08-23 | 1 | -2/+2 |
| | | | Co-Authored-By: Erik Johnston <erik@matrix.org> | ||||
* | Exempt bot users | Half-Shot | 2019-08-23 | 1 | -1/+1 |
| | |||||
* | Return user_type in get_user_by_id | Half-Shot | 2019-08-23 | 1 | -1/+4 |
| | |||||
* | Deny redaction of events in a different room. | Erik Johnston | 2019-07-31 | 1 | -1/+3 |
| | | | | | We already correctly filter out such redactions, but we should also deny them over the CS API. | ||||
* | Stop trying to fetch events with event_id=None. (#5753) | Richard van der Hoff | 2019-07-24 | 1 | -1/+7 |
| | | | | | | | `None` is not a valid event id, so queuing up a database fetch for it seems like a silly thing to do. I considered making `get_event` return `None` if `event_id is None`, but then its interaction with `allow_none` seemed uninituitive, and strong typing ftw. | ||||
* | Replace returnValue with return (#5736) | Amber Brown | 2019-07-23 | 1 | -17/+15 |
| | |||||
* | Ignore redactions of m.room.create events (#5701) | Richard van der Hoff | 2019-07-17 | 1 | -9/+24 |
| | |||||
* | Move logging utilities out of the side drawer of util/ and into logging/ (#5606) | Amber Brown | 2019-07-04 | 1 | -1/+1 |
| | |||||
* | Run Black. (#5482) | Amber Brown | 2019-06-20 | 1 | -158/+100 |
| | |||||
* | Run as background process and fix comments | Erik Johnston | 2019-06-19 | 1 | -2/+5 |
| | |||||
* | Add experimental option to reduce extremities. | Erik Johnston | 2019-06-18 | 1 | -1/+71 |
| | | | | | | | Adds new config option `cleanup_extremities_with_dummy_events` which periodically sends dummy events to rooms with more than 10 extremities. THIS IS REALLY EXPERIMENTAL. | ||||
* | Add plugin APIs for implementations of custom event rules. | Brendan Abolivier | 2019-06-14 | 1 | -2/+12 |
| | |||||
* | Merge pull request #5220 from matrix-org/erikj/dont_bundle_live_events | Erik Johnston | 2019-05-24 | 1 | -0/+3 |
|\ | | | | | Don't bundle aggregations with events in /sync or /events or state queries | ||||
| * | Don't bundle aggs for /state and /members etc APIs | Erik Johnston | 2019-05-24 | 1 | -0/+3 |
| | | |||||
* | | Fix words | Erik Johnston | 2019-05-21 | 1 | -3/+3 |
| | | |||||
* | | Block attempts to annotate the same event twice | Erik Johnston | 2019-05-20 | 1 | -1/+15 |
|/ | |||||
* | Allow client event serialization to be async | Erik Johnston | 2019-05-14 | 1 | -3/+4 |
| | |||||
* | Do checks on aliases for incoming m.room.aliases events (#5128) | Brendan Abolivier | 2019-05-08 | 1 | -0/+30 |
| | | | | | Follow-up to #5124 Also added a bunch of checks to make sure everything (both the stuff added on #5124 and this PR) works as intended. | ||||
* | Fix grammar and document get_current_users_in_room (#4998) | Andrew Morgan | 2019-04-03 | 1 | -1/+1 |
| | |||||
* | Collect room-version variations into one place (#4969) | Richard van der Hoff | 2019-04-01 | 1 | -2/+5 |
| | | | | Collect all the things that make room-versions different to one another into one place, so that it's easier to define new room versions. | ||||
* | Revert spurious delete | Erik Johnston | 2019-03-20 | 1 | -0/+4 |
| | |||||
* | Use flags | Erik Johnston | 2019-03-20 | 1 | -13/+5 |
| | |||||
* | Move requester check into assert_accepted_privacy_policy | Erik Johnston | 2019-03-20 | 1 | -5/+8 |
| | |||||
* | Only require consent for events with an associated request | Erik Johnston | 2019-03-20 | 1 | -1/+5 |
| | | | | | | | | | There are a number of instances where a server or admin may puppet a user to join/leave rooms, which we don't want to fail if the user has not consented to the privacy policy. We fix this by adding a check to test if the requester has an associated access_token, which is used as a proxy to answer the question of whether the action is being done on behalf of a real request from the user. | ||||
* | fix test_auto_create_auto_join_where_no_consent (#4886) | Neil Johnson | 2019-03-19 | 1 | -3/+10 |
| | |||||
* | Fix incorrect log about not persisting duplicate state event. (#4776) | Richard van der Hoff | 2019-03-01 | 1 | -3/+4 |
| | | | We were logging this when it was not true. | ||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2019-01-29 | 1 | -28/+6 |
|\ | | | | | | | erikj/redactions_eiah | ||||
| * | Correctly set context.app_service | Erik Johnston | 2019-01-29 | 1 | -0/+2 |
| | | |||||
| * | Refactor event building into EventBuilder | Erik Johnston | 2019-01-29 | 1 | -29/+5 |
| | | | | | | | | | | This is so that everything is done in one place, making it easier to change the event format based on room version | ||||
* | | Implement rechecking of redactions | Erik Johnston | 2019-01-29 | 1 | -1/+5 |
|/ | |||||
* | Merge pull request #4494 from matrix-org/erikj/fixup_event_validator | Erik Johnston | 2019-01-29 | 1 | -1/+3 |
|\ | | | | | Split up event validation between event and builder | ||||
| * | Split up event validation between event and builder | Erik Johnston | 2019-01-28 | 1 | -1/+3 |
| | | | | | | | | | | | | | | | | | | The validator was being run on the EventBuilder objects, and so the validator only checked a subset of fields. With the upcoming EventBuilder refactor even fewer fields will be there to validate. To get around this we split the validation into those that can be run against an EventBuilder and those run against a fully fledged event. | ||||
* | | Correctly use default room version if none is set | Erik Johnston | 2019-01-28 | 1 | -2/+2 |
| | | |||||
* | | Pass through room version to event auth | Erik Johnston | 2019-01-25 | 1 | -1/+6 |
|/ | |||||
* | Require event format version to parse or create events | Erik Johnston | 2019-01-25 | 1 | -1/+9 |
| | |||||
* | Revert "Require event format version to parse or create events" | Erik Johnston | 2019-01-25 | 1 | -9/+1 |
| | |||||
* | Require event format version to parse or create events | Erik Johnston | 2019-01-23 | 1 | -1/+9 |
| | |||||
* | Log some bits about event creation (#4121) | Richard van der Hoff | 2018-10-31 | 1 | -0/+3 |
| | | | | I found these helpful in debugging my room upgrade tests. | ||||
* | Refactor state group lookup to reduce DB hits (#4011) | Erik Johnston | 2018-10-25 | 1 | -12/+8 |
| | | | | | | | | Currently when fetching state groups from the data store we make two hits two the database: once for members and once for non-members (unless request is filtered to one or the other). This adds needless load to the datbase, so this PR refactors the lookup to make only a single database hit. | ||||
* | Remove redundant run_as_background_process() from pusherpool | Richard van der Hoff | 2018-10-22 | 1 | -1/+1 |
| | | | | | | | `on_new_notifications` and `on_new_receipts` in `HttpPusher` and `EmailPusher` now always return synchronously, so we can remove the `defer.gatherResults` on their results, and the `run_as_background_process` wrappers can be removed too because the PusherPool methods will now complete quickly enough. | ||||
* | Avoid reraise, to improve stacktraces | Richard van der Hoff | 2018-10-01 | 1 | -12/+13 |
| | |||||
* | Merge pull request #3710 from matrix-org/rav/logcontext_for_pusher_updates | Richard van der Hoff | 2018-08-17 | 1 | -5/+2 |
|\ | | | | | Fix logcontexts for running pushers | ||||
| * | Fix logcontexts for running pushers | Richard van der Hoff | 2018-08-17 | 1 | -5/+2 |
| | | | | | | | | | | | | | | First of all, avoid resetting the logcontext before running the pushers, to fix the "Starting db txn 'get_all_updated_receipts' from sentinel context" warning. Instead, give them their own "background process" logcontexts. | ||||
* | | block event creation and room creation on hitting resource limits | Neil Johnson | 2018-08-16 | 1 | -1/+5 |
|/ | |||||
* | speed up /members and add at= and membership params (#3568) | Matthew Hodgson | 2018-08-15 | 1 | -12/+76 |
| | |||||
* | Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678) | Amber Brown | 2018-08-10 | 1 | -1/+1 |
| | |||||
* | Use new helper base class for ReplicationSendEventRestServlet | Erik Johnston | 2018-07-31 | 1 | -7/+4 |
| | |||||
* | Merge branch 'develop' into erikj/client_apis_move | Erik Johnston | 2018-07-24 | 1 | -12/+19 |
|\ | |||||
| * | Fix missing attributes on workers. | Erik Johnston | 2018-07-23 | 1 | -2/+3 |
| | | | | | | | | | | This was missed during the transition from attribute to getter for getting state from context. | ||||
| * | Use new getters | Erik Johnston | 2018-07-23 | 1 | -10/+16 |
| | | |||||
* | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-07-23 | 1 | -2/+2 |
|\| | | | | | | | erikj/client_apis_move | ||||
| * | Combine Limiter and Linearizer | Richard van der Hoff | 2018-07-20 | 1 | -2/+2 |
| | | | | | | | | | | Linearizer was effectively a Limiter with max_count=1, so rather than maintaining two sets of code, let's combine them. | ||||
| * | Improvements to the Limiter | Richard van der Hoff | 2018-07-20 | 1 | -1/+1 |
| | | | | | | | | | | * give them names, to improve logging * use a deque rather than a list for efficiency | ||||
* | | Move PaginationHandler to its own file | Erik Johnston | 2018-07-20 | 1 | -240/+2 |
| | | |||||
* | | Move check_in_room_or_world_readable to Auth | Erik Johnston | 2018-07-20 | 1 | -34/+6 |
| | | |||||
* | | Split MessageHandler into read only and writers | Erik Johnston | 2018-07-18 | 1 | -131/+150 |
|/ | | | | | This will let us call the read only parts from workers, and so be able to move some APIs off of master, e.g. the `/state` API. | ||||
* | s/becuase/because/g | Matthew Hodgson | 2018-07-10 | 1 | -1/+1 |
| | |||||
* | run isort | Amber Brown | 2018-07-09 | 1 | -13/+10 |
| | |||||
* | Attempt to be more performant on PyPy (#3462) | Amber Brown | 2018-06-28 | 1 | -3/+2 |
| | |||||
* | allow non-consented users to still part rooms (to let us autopart them) | Matthew Hodgson | 2018-06-25 | 1 | -2/+6 |
| | |||||
* | Remove all global reactor imports & pass it around explicitly (#3424) | Amber Brown | 2018-06-25 | 1 | -2/+2 |
| | |||||
* | Pass around the reactor explicitly (#3385) | Amber Brown | 2018-06-22 | 1 | -0/+1 |
| | |||||
* | Remove run_on_reactor (#3395) | Amber Brown | 2018-06-14 | 1 | -3/+1 |
| | |||||
* | Exempt AS-registered users from doing gdpr | Richard van der Hoff | 2018-05-29 | 1 | -0/+3 |
| | |||||
* | Misc. py3 fixes | Adrian Tschira | 2018-05-24 | 1 | -4/+5 |
| | | | | Signed-off-by: Adrian Tschira <nota@notafile.com> | ||||
* | Merge branch 'release-v0.30.0' into rav/localpart_in_consent_uri | Richard van der Hoff | 2018-05-23 | 1 | -1/+4 |
|\ | |||||
| * | Support for putting %(consent_uri)s in messages | Richard van der Hoff | 2018-05-23 | 1 | -1/+4 |
| | | | | | | | | | | Make it possible to put the URI in the error message and the server notice that get sent by the server | ||||
* | | Use the localpart in the consent uri | Richard van der Hoff | 2018-05-23 | 1 | -1/+3 |
|/ | | | | ... because it's shorter. | ||||
* | Reject attempts to send event before privacy consent is given | Richard van der Hoff | 2018-05-22 | 1 | -1/+85 |
| | | | | | | Returns an M_CONSENT_NOT_GIVEN error (cf https://github.com/matrix-org/matrix-doc/issues/1252) if consent is not yet given. | ||||
* | Make purge_history operate on tokens | Erik Johnston | 2018-05-15 | 1 | -6/+6 |
| | | | | As we're soon going to change how topological_ordering works | ||||
* | Merge branch 'release-v0.28.1' into develop | Richard van der Hoff | 2018-05-01 | 1 | -1/+5 |
|\ | |||||
| * | Apply some limits to depth to counter abuse | Richard van der Hoff | 2018-05-01 | 1 | -1/+5 |
| | | | | | | | | | | | | | | * When creating a new event, cap its depth to 2^63 - 1 * When receiving events, reject any without a sensible depth As per https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI | ||||
* | | pep8; remove spurious import | Richard van der Hoff | 2018-04-27 | 1 | -1/+1 |
| | | |||||
* | | Merge remote-tracking branch 'origin/develop' into rav/use_run_in_background | Richard van der Hoff | 2018-04-27 | 1 | -13/+30 |
|\ \ | |||||
| * \ | Merge pull request #3142 from matrix-org/rav/reraise | Richard van der Hoff | 2018-04-27 | 1 | -7/+14 |
| |\ \ | | | | | | | | | reraise exceptions more carefully | ||||
| | * | | reraise exceptions more carefully | Richard van der Hoff | 2018-04-27 | 1 | -7/+14 |
| | |/ | | | | | | | | | | | | | | | | | | | We need to be careful (under python 2, at least) that when we reraise an exception after doing some error handling, we actually reraise the original exception rather than anything that might have been raised (and handled) during the error handling. | ||||
| * / | Improve exception handling for background processes | Richard van der Hoff | 2018-04-27 | 1 | -6/+16 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were a bunch of places where we fire off a process to happen in the background, but don't have any exception handling on it - instead relying on the unhandled error being logged when the relevent deferred gets garbage-collected. This is unsatisfactory for a number of reasons: - logging on garbage collection is best-effort and may happen some time after the error, if at all - it can be hard to figure out where the error actually happened. - it is logged as a scary CRITICAL error which (a) I always forget to grep for and (b) it's not really CRITICAL if a background process we don't care about fails. So this is an attempt to add exception handling to everything we fire off into the background. | ||||
* / | Use run_in_background in preference to preserve_fn | Richard van der Hoff | 2018-04-27 | 1 | -2/+3 |
|/ | | | | | | While I was going through uses of preserve_fn for other PRs, I converted places which only use the wrapped function once to use run_in_background, to avoid creating the function object. | ||||
* | Avoid creating events with huge numbers of prev_events | Richard van der Hoff | 2018-04-16 | 1 | -34/+44 |
| | | | | | | In most cases, we limit the number of prev_events for a given event to 10 events. This fixes a particular code path which created events with huge numbers of prev_events. | ||||
* | Note why we're limiting concurrent event sends | Erik Johnston | 2018-04-10 | 1 | -0/+5 |
| | |||||
* | Limit concurrent event sends for a room | Erik Johnston | 2018-04-09 | 1 | -49/+50 |
| | |||||
* | Use static JSONEncoders | Richard van der Hoff | 2018-03-29 | 1 | -2/+2 |
| | | | | | using json.dumps with custom options requires us to create a new JSONEncoder on each call. It's more efficient to create one upfront and reuse it. | ||||
* | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2018-03-19 | 1 | -3/+3 |
|\ | |||||
| * | Replace ujson with simplejson | Erik Johnston | 2018-03-15 | 1 | -3/+3 |
| | | |||||
* | | extra_users is actually a list of UserIDs | Erik Johnston | 2018-03-13 | 1 | -1/+1 |
| | | |||||
* | | Add transactional API to history purge | Richard van der Hoff | 2018-03-12 | 1 | -5/+99 |
| | | | | | | | | Make the purge request return quickly, and allow scripts to poll for updates. | ||||
* | | Return an error when doing two purges on a room | Richard van der Hoff | 2018-03-12 | 1 | -3/+14 |
| | | | | | | | | Queuing up purges doesn't sound like a good thing. | ||||
* | | Provide a means to pass a timestamp to purge_history | Richard van der Hoff | 2018-03-05 | 1 | -9/+5 |
| | | |||||
* | | Check event auth on the worker | Erik Johnston | 2018-03-01 | 1 | -16/+16 |
| | | |||||
* | | Correctly send ratelimit and extra_users params | Erik Johnston | 2018-03-01 | 1 | -0/+2 |
| | | |||||
* | | Fixup comments | Erik Johnston | 2018-03-01 | 1 | -4/+4 |
| | | |||||
* | | Calculate push actions on worker | Erik Johnston | 2018-02-28 | 1 | -25/+61 |
| | | |||||
* | | Ensure that we delete staging push actions on errors | Erik Johnston | 2018-02-15 | 1 | -3/+9 |
| | | |||||
* | | Merge pull request #2854 from matrix-org/erikj/event_create_worker | Erik Johnston | 2018-02-13 | 1 | -6/+22 |
|\ \ | | | | | | | Create a worker for event creation | ||||
| * | | Move presence handling into handle_new_client_event | Erik Johnston | 2018-02-07 | 1 | -6/+6 |
| | | | | | | | | | | | | As we want to have it run on the main synapse instance | ||||
| * | | Add replication http endpoint for event sending | Erik Johnston | 2018-02-07 | 1 | -0/+16 |
| | | | |||||
* | | | Merge pull request #2858 from matrix-org/rav/purge_updates | Richard van der Hoff | 2018-02-09 | 1 | -2/+2 |
|\ \ \ | |/ / |/| | | delete_local_events for purge_room_history | ||||
| * | | delete_local_events for purge_history | Richard van der Hoff | 2018-02-09 | 1 | -2/+2 |
| | | | | | | | | | | | | Add a flag which makes the purger delete local events | ||||
| * | | rename delete_old_state -> purge_history | Richard van der Hoff | 2018-02-09 | 1 | -1/+1 |
| |/ | | | | | | | (beacause it deletes more than state) | ||||
* | | Remove pointless ratelimit check | Erik Johnston | 2018-02-07 | 1 | -5/+0 |
| | | | | | | | | | | | | The intention was for the check to be called as early as possible in the request, but actually was called just before the main ratelimit check, so was fairly pointless. | ||||
* | | Update copyright | Erik Johnston | 2018-02-06 | 1 | -1/+1 |
| | | |||||
* | | s/_create_new_client_event/create_new_client_event/ | Erik Johnston | 2018-02-06 | 1 | -3/+3 |
| | | |||||
* | | Split event creation into a separate handler | Erik Johnston | 2018-02-05 | 1 | -146/+160 |
|/ | |||||
* | replace 'except:' with 'except Exception:' | Richard van der Hoff | 2017-10-23 | 1 | -1/+1 |
| | | | | what could possibly go wrong | ||||
* | fix isinstance | David Baker | 2017-10-11 | 1 | -1/+1 |
| | |||||
* | Allow error strings from spam checker | David Baker | 2017-10-11 | 1 | -2/+6 |
| | |||||
* | Merge pull request #2466 from matrix-org/erikj/groups_merged | Erik Johnston | 2017-10-11 | 1 | -1/+2 |
|\ | | | | | Initial Group Implementation | ||||
| * | Merge branch 'develop' into erikj/groups_merged | David Baker | 2017-10-02 | 1 | -1/+53 |
| |\ | |||||
| * | | Split out profile handler to fix tests | Erik Johnston | 2017-08-25 | 1 | -1/+2 |
| | | | |||||
* | | | Merge pull request #2483 from jeremycline/unfreeze-ujson-dump | Erik Johnston | 2017-10-11 | 1 | -1/+2 |
|\ \ \ | |_|/ |/| | | Unfreeze event before serializing with ujson | ||||
| * | | Unfreeze event before serializing with ujson | Jeremy Cline | 2017-09-30 | 1 | -1/+2 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In newer versions of https://github.com/esnme/ultrajson, ujson does not serialize frozendicts (introduced in esnme/ultrajson@53f85b1). Although the PyPI version is still 1.35, Fedora ships with a build from commit esnme/ultrajson@2f1d487. This causes the serialization to fail if the distribution-provided package is used. This runs the event through the unfreeze utility before serializing it. Thanks to @ignatenkobrain for tracking down the root cause. fixes #2351 Signed-off-by: Jeremy Cline <jeremy@jcline.org> | ||||
* | | Fix /joined_members to work with AS users | Erik Johnston | 2017-09-28 | 1 | -11/+25 |
| | | |||||
* | | Fix bug where /joined_members didn't check user was in room | Erik Johnston | 2017-09-27 | 1 | -0/+31 |
| | | |||||
* | | Make the spam checker a module | David Baker | 2017-09-26 | 1 | -2/+3 |
| | | |||||
* | | PoC for filtering spammy events (#2456) | Richard van der Hoff | 2017-09-19 | 1 | -1/+7 |
|/ | | | Demonstration of how you might add some hooks to filter out spammy events. | ||||
* | Fix bug where pusherpool didn't start and broke some rooms | Erik Johnston | 2017-07-06 | 1 | -1/+3 |
| | | | | | | | | Since we didn't instansiate the PusherPool at start time it could fail at run time, which it did for some users. This may or may not fix things for those users, but it should happen at start time and stop the server from starting. | ||||
* | Remove unused variables | Erik Johnston | 2017-06-26 | 1 | -1/+1 |
| | |||||
* | Reject local events that don't round trip the DB | Erik Johnston | 2017-06-19 | 1 | -0/+9 |
| | |||||
* | Store ActionGenerator in HomeServer | Erik Johnston | 2017-05-19 | 1 | -2/+1 |
| | |||||
* | Faster push rule calculation via push specific cache | Erik Johnston | 2017-05-17 | 1 | -2/+3 |
| | | | | | We add a push rule specific cache that ensures that we can reuse calculated push rules appropriately when a user join/leaves. | ||||
* | Add per user ratelimiting overrides | Erik Johnston | 2017-05-10 | 1 | -13/+3 |
| | |||||
* | Add more granular event send metrics | Erik Johnston | 2017-05-02 | 1 | -2/+8 |
| | |||||
* | Fix invite state to always include all events | Erik Johnston | 2017-04-26 | 1 | -6/+3 |
| | |||||
* | Remove spurious yield | Richard van der Hoff | 2017-04-03 | 1 | -1/+1 |
| | | | | | In `MessageHandler`, remove `yield` on call to `Notifier.on_new_room_event`: it doesn't return anything anyway. | ||||
* | Don't clobber a displayname or avatar_url if provided by an m.room.member event | Paul "LeoNerd" Evans | 2017-01-24 | 1 | -2/+4 |
| | |||||
* | Comment | Erik Johnston | 2017-01-10 | 1 | -0/+2 |
| | |||||
* | Don't block messages sending on bumping presence | Erik Johnston | 2017-01-10 | 1 | -1/+1 |
| | |||||
* | Merge pull request #1620 from matrix-org/erikj/concurrent_room_access | Erik Johnston | 2016-12-12 | 1 | -27/+33 |
|\ | | | | | Limit the number of events that can be created on a given room concurrently | ||||
| * | Comments | Erik Johnston | 2016-11-11 | 1 | -0/+2 |
| | | |||||
| * | Limit the number of events that can be created on a given room concurretnly | Erik Johnston | 2016-11-10 | 1 | -27/+31 |
| | | |||||
* | | Handle sending events and device messages over federation | Erik Johnston | 2016-11-17 | 1 | -12/+1 |
|/ | |||||
* | Sample correctly | Erik Johnston | 2016-11-08 | 1 | -1/+3 |
| | |||||
* | Limit the number of prev_events of new events | Erik Johnston | 2016-11-08 | 1 | -0/+13 |
| | |||||
* | Fix incredubly slow back pagination query | Erik Johnston | 2016-10-24 | 1 | -2/+2 |
| | | | | | | | If a client didn't specify a from token when paginating backwards synapse would attempt to query the (global) maximum topological token. This a) doesn't make much sense since they're room specific and b) there are no indices that lets postgres do this efficiently. | ||||
* | Comment | Erik Johnston | 2016-10-19 | 1 | -0/+3 |
| | |||||
* | Check whether to ratelimit sooner to avoid work | Erik Johnston | 2016-10-19 | 1 | -1/+13 |
| | |||||
* | Support /initialSync in synchrotron worker | Erik Johnston | 2016-09-21 | 1 | -378/+3 |
| | |||||
* | Use get_joined_users_from_context instead of manually looking up hosts | Erik Johnston | 2016-09-05 | 1 | -38/+6 |
| | |||||
* | Correctly handle the difference between prev and current state | Erik Johnston | 2016-08-31 | 1 | -5/+5 |
| | |||||
* | Replace context.current_state with context.current_state_ids | Erik Johnston | 2016-08-25 | 1 | -22/+69 |
| | |||||
* | Preserve some logcontexts | Erik Johnston | 2016-08-24 | 1 | -15/+20 |
| | |||||
* | Add filter param to /messages API | Erik Johnston | 2016-07-14 | 1 | -4/+12 |
| | |||||
* | Add ReadWriteLock for pagination and history prune | Erik Johnston | 2016-07-05 | 1 | -34/+36 |
| | |||||
* | Add purge_history API | Erik Johnston | 2016-07-05 | 1 | -0/+13 |
| | |||||
* | Poke notifier on next reactor tick | Erik Johnston | 2016-06-03 | 1 | -4/+7 |
| | |||||
* | Merge pull request #787 from matrix-org/markjh/liberate_presence_handler | Mark Haines | 2016-05-17 | 1 | -2/+2 |
|\ | | | | | Move the presence handler out of the Handlers object | ||||
| * | Move the presence handler out of the Handlers object | Mark Haines | 2016-05-16 | 1 | -2/+2 |
| | | |||||
* | | Spell "domain" correctly | Mark Haines | 2016-05-16 | 1 | -2/+2 |
|/ | | | | s/domian/domain/g | ||||
* | move filter_events_for_client out of base handler | Mark Haines | 2016-05-11 | 1 | -8/+10 |
| | |||||
* | Shuffle when we get the signing_key attribute. | Mark Haines | 2016-05-11 | 1 | -2/+2 |
| | | | | | | | | Wait until we sign a message to get the signing key from the homeserver config. This means that the message handler can be created without having a signing key in the config which means that separate processes like the pusher that don't send messages and don't need to sign them can still access the handlers. | ||||
* | Move _create_new_client_event and handle_new_client_event out of base handler | Mark Haines | 2016-05-11 | 1 | -2/+197 |
| | |||||
* | Run filter_events_for_client | David Baker | 2016-04-27 | 1 | -4/+4 |
| | | | | so we don't accidentally mail out events people shouldn't see | ||||
* | Remove some unused functions (#711) | Mark Haines | 2016-04-08 | 1 | -29/+0 |
| | | | | | | | | * Remove some unused functions * get_room_events_stream is only used in tests * is_exclusive_room might actually be something we want | ||||
* | Call profile handler get_displayname directly rather than using ↵ | Mark Haines | 2016-04-07 | 1 | -9/+1 |
| | | | | collect_presencelike_data | ||||
* | Use computed prev event ids | Erik Johnston | 2016-04-01 | 1 | -1/+5 |
| | |||||
* | Add concurrently_execute function | Erik Johnston | 2016-04-01 | 1 | -8/+2 |
| | |||||
* | Merge pull request #618 from matrix-org/markjh/pushrule_stream | Mark Haines | 2016-03-04 | 1 | -2/+2 |
|\ | | | | | Add a stream for push rule updates | ||||
| * | Merge branch 'develop' into markjh/pushrule_stream | Mark Haines | 2016-03-04 | 1 | -3/+5 |
| |\ | |||||
| * | | Hook up the push rules to the notifier | Mark Haines | 2016-03-03 | 1 | -2/+2 |
| | | | |||||
* | | | Spelling | Erik Johnston | 2016-03-04 | 1 | -1/+1 |
| | | | |||||
* | | | Add profile information to invites | Erik Johnston | 2016-03-04 | 1 | -2/+15 |
| |/ |/| | |||||
* | | Pass whole requester to ratelimiting | Daniel Wagner-Hall | 2016-03-03 | 1 | -3/+5 |
|/ | | | | This will enable more detailed decisions | ||||
* | Merge pull request #582 from matrix-org/erikj/presence | Erik Johnston | 2016-02-19 | 1 | -11/+3 |
|\ | | | | | Rewrite presence for performance. | ||||
| * | Initial cut | Erik Johnston | 2016-02-17 | 1 | -11/+3 |
| | | |||||
* | | Review comments | Daniel Wagner-Hall | 2016-02-18 | 1 | -1/+1 |
| | | |||||
* | | Some cleanup | Daniel Wagner-Hall | 2016-02-16 | 1 | -4/+10 |
| | | |||||
* | | Branch off member and non member sends | Daniel Wagner-Hall | 2016-02-15 | 1 | -32/+34 |
| | | | | | | | | Unclean, needs tidy-up, but works | ||||
* | | Merge implementation of /join by alias or ID | Daniel Wagner-Hall | 2016-02-15 | 1 | -7/+13 |
|/ | | | | | This code is kind of rough (passing the remote servers down a long chain), but is a step towards improvement. | ||||
* | Allow paginating backwards from stream token | Erik Johnston | 2016-01-28 | 1 | -6/+9 |
| | |||||
* | Make it possible to paginate forwards from stream tokens | Richard van der Hoff | 2016-01-27 | 1 | -22/+21 |
| | | | | | In order that we can fill the gap after a /sync, make it possible to paginate forwards from a stream token. | ||||
* | Allow non-guests to peek on rooms using /events | Daniel Wagner-Hall | 2016-01-20 | 1 | -47/+46 |
| | |||||
* | Require unbanning before other membership changes | Daniel Wagner-Hall | 2016-01-15 | 1 | -12/+45 |
| | |||||
* | Skip, rather than erroring, invalid guest requests | Daniel Wagner-Hall | 2016-01-05 | 1 | -2/+2 |
| | | | | | | | | | | Erroring causes problems when people make illegal requests, because they don't know what limit parameter they should pass. This is definitely buggy. It leaks message counts for rooms people don't have permission to see, via tokens. But apparently we already consciously decided to allow that as a team, so this preserves that behaviour. | ||||
* | Move the doc string to the public facing method | Mark Haines | 2015-12-22 | 1 | -16/+17 |
| | |||||
* | Add a cache for initialSync responses that expires after 5 minutes | Mark Haines | 2015-12-22 | 1 | -1/+23 |
| | |||||
* | Make state updates in the C+S API idempotent | Mark Haines | 2015-12-02 | 1 | -0/+12 |
| |