Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Fix mainline ordering in state res v2 (#8971) | Erik Johnston | 2020-12-18 | 1 | -1/+1 |
| | | | | | | This had two effects 1) it'd give the wrong answer and b) would iterate *all* power levels in the auth chain of each event. The latter of which can be *very* expensive for certain types of IRC bridge rooms that have large numbers of power level changes. | ||||
* | Pass room_id to get_auth_chain_difference (#8879) | Erik Johnston | 2020-12-04 | 2 | -4/+9 |
| | | | | | This is so that we can choose which algorithm to use based on the room ID. | ||||
* | Correctly handle unpersisted events when calculating auth chain difference. ↵ | Erik Johnston | 2020-12-02 | 1 | -4/+83 |
| | | | | | | | | | (#8827) We do state res with unpersisted events when calculating the new current state of the room, so that should be the only thing impacted. I don't think this is tooooo big of a deal as: 1. the next time a state event happens in the room the current state should correct itself; 2. in the common case all the unpersisted events' auth events will be pulled in by other state, so will still return the correct result (or one which is sufficiently close to not affect the result); and 3. we mostly use the state at an event to do important operations, which isn't affected by this. | ||||
* | Fix typos and spelling errors. (#8639) | Patrick Cloke | 2020-10-23 | 3 | -3/+3 |
| | |||||
* | Enable mypy checking for unreachable code and fix instances. (#8432) | Patrick Cloke | 2020-10-01 | 1 | -1/+1 |
| | |||||
* | Report state res metrics to Prometheus and log | Richard van der Hoff | 2020-09-29 | 1 | -20/+124 |
| | |||||
* | Move Measure calls into `resolve_events_with_store` | Richard van der Hoff | 2020-09-29 | 1 | -32/+31 |
| | |||||
* | Move `resolve_events_with_store` into StateResolutionHandler | Richard van der Hoff | 2020-09-29 | 1 | -45/+47 |
| | |||||
* | Improve logging of state resolution (#8371) | Richard van der Hoff | 2020-09-23 | 1 | -48/+16 |
| | | | | | | | | | | I'd like to get a better insight into what we are doing with respect to state res. The list of state groups we are resolving across should be short (if it isn't, that's a massive problem in itself), so it should be fine to log it in ite entiretly. I've done some grepping and found approximately zero cases in which the "shortcut" code delivered the result, so I've ripped that out too. | ||||
* | Use slots in attrs classes where possible (#8296) | Patrick Cloke | 2020-09-14 | 1 | -1/+1 |
| | | | | | slots use less memory (and attribute access is faster) while slightly limiting the flexibility of the class attributes. This focuses on objects which are instantiated "often" and for short periods of time. | ||||
* | Stop sub-classing object (#8249) | Patrick Cloke | 2020-09-04 | 1 | -4/+4 |
| | |||||
* | Define StateMap as immutable and add a MutableStateMap type. (#8183) | Patrick Cloke | 2020-08-28 | 3 | -20/+28 |
| | |||||
* | Add type hints for state. (#8140) | Patrick Cloke | 2020-08-24 | 3 | -186/+348 |
| | |||||
* | Convert events worker database to async/await. (#8071) | Patrick Cloke | 2020-08-18 | 1 | -1/+1 |
| | |||||
* | Rename database classes to make some sense (#8033) | Erik Johnston | 2020-08-05 | 1 | -1/+1 |
| | |||||
* | Convert state resolution to async/await (#7942) | Patrick Cloke | 2020-07-24 | 3 | -120/+97 |
| | |||||
* | Add another yield point to state res v2 (#7746) | Erik Johnston | 2020-06-26 | 1 | -2/+10 |
| | |||||
* | Yield during large v2 state res. (#7735) | Erik Johnston | 2020-06-24 | 2 | -11/+51 |
| | | | | | | | | | | | State res v2 across large data sets can be very CPU intensive, and if all the relevant events are in the cache the algorithm will run from start to finish within a single reactor tick. This can result in blocking the reactor tick for several seconds, which can have major repercussions on other requests. To fix this we simply add the occaisonal `sleep(0)` during iterations to yield execution until the next reactor tick. The aim is to only do this for large data sets so that we don't impact otherwise quick resolutions.= | ||||
* | Speed up state res v2 across large state differences. (#7725) | Erik Johnston | 2020-06-19 | 1 | -1/+2 |
| | |||||
* | Replace iteritems/itervalues/iterkeys with native versions. (#7692) | Patrick Cloke | 2020-06-15 | 3 | -30/+24 |
| | |||||
* | Allow configuration of Synapse's cache without using synctl or environment ↵ | Amber Brown | 2020-05-11 | 1 | -3/+1 |
| | | | | variables (#6391) | ||||
* | Improve get auth chain difference algorithm. (#7095) | Erik Johnston | 2020-03-18 | 2 | -48/+12 |
| | | | | | | | | | | | It was originally implemented by pulling the full auth chain of all state sets out of the database and doing set comparison. However, that can take a lot work if the state and auth chains are large. Instead, lets try and fetch the auth chains at the same time and calculate the difference on the fly, allowing us to bail early if all the auth chains converge. Assuming that the auth chains do converge more often than not, this should improve performance. Hopefully. | ||||
* | Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957) | Patrick Cloke | 2020-02-21 | 2 | -9/+9 |
| | | | | Ensure good comprehension hygiene using flake8-comprehensions. | ||||
* | Reduce auth chains fetched during v2 state res. (#6952) | Erik Johnston | 2020-02-19 | 2 | -6/+11 |
| | | | | | | The state res v2 algorithm only cares about the difference between auth chains, so we can pass in the known common state to the `get_auth_chain` storage function so that it can ignore those events. | ||||
* | s/get_room_version/get_room_version_id/ | Richard van der Hoff | 2020-01-31 | 1 | -1/+1 |
| | | | | | ... 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 | 2 | -3/+5 |
| | | | | | | | 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. | ||||
* | Add StateMap type alias (#6715) | Erik Johnston | 2020-01-16 | 3 | -8/+11 |
| | |||||
* | Merge branch 'master' into develop | Richard van der Hoff | 2019-12-31 | 1 | -15/+37 |
|\ | |||||
| * | Hacks to work around #6605 (#6608) | Richard van der Hoff | 2019-12-31 | 1 | -15/+37 |
| | | | | | | | | | | When we have an event which refers to non-existent auth_events, ignore said events rather than exploding in a ball of fire. Fixes #6605. | ||||
| * | sanity-checking for events used in state res (#6531) | Richard van der Hoff | 2019-12-16 | 3 | -43/+123 |
| | | | | | | | | | | When we perform state resolution, check that all of the events involved are in the right room. | ||||
* | | sanity-checking for events used in state res (#6531) | Richard van der Hoff | 2019-12-13 | 3 | -43/+123 |
| | | | | | | | | | | | | | | When we perform state resolution, check that all of the events involved are in the right room. | ||||
* | | Prevent redacted events from appearing in message search (#6377) | Andrew Morgan | 2019-12-11 | 1 | -1/+2 |
|/ | |||||
* | Fix bug which caused rejected events to be stored with the wrong room state ↵ | Richard van der Hoff | 2019-11-06 | 1 | -89/+83 |
| | | | | | | | | | | | | (#6320) Fixes a bug where rejected events were persisted with the wrong state group. Also fixes an occasional internal-server-error when receiving events over federation which are rejected and (possibly because they are backwards-extremities) have no prev_group. Fixes #6289. | ||||
* | Improve documentation for EventContext fields (#6319) | Richard van der Hoff | 2019-11-05 | 1 | -0/+3 |
| | |||||
* | Port to use state storage | Erik Johnston | 2019-10-30 | 1 | -5/+8 |
| | |||||
* | add some metrics on the federation sender (#6160) | Richard van der Hoff | 2019-10-03 | 1 | -6/+18 |
| | |||||
* | Remove double return statements (#5962) | Andrew Morgan | 2019-09-03 | 1 | -1/+0 |
| | | | | | | | | | | Remove all the "double return" statements which were a result of us removing all the instances of ``` defer.returnValue(...) return ``` statements when we switched to python3 fully. | ||||
* | Replace returnValue with return (#5736) | Amber Brown | 2019-07-23 | 3 | -38/+34 |
| | |||||
* | Move logging utilities out of the side drawer of util/ and into logging/ (#5606) | Amber Brown | 2019-07-04 | 1 | -1/+1 |
| | |||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2019-06-20 | 3 | -151/+104 |
|\ | | | | | | | erikj/histogram_extremities | ||||
| * | Run Black. (#5482) | Amber Brown | 2019-06-20 | 3 | -151/+104 |
| | | |||||
* | | Add descriptions and remove redundant set(..) | Erik Johnston | 2019-06-19 | 1 | -1/+2 |
| | | |||||
* | | Only count non-cache state resolution | Erik Johnston | 2019-06-18 | 1 | -3/+3 |
| | | |||||
* | | Use consistent buckets | Erik Johnston | 2019-06-18 | 1 | -1/+1 |
| | | |||||
* | | Add metric fo number of state groups in resolution | Erik Johnston | 2019-06-17 | 1 | -0/+10 |
|/ | |||||
* | Fix grammar and document get_current_users_in_room (#4998) | Andrew Morgan | 2019-04-03 | 1 | -2/+13 |
| | |||||
* | Collect room-version variations into one place (#4969) | Richard van der Hoff | 2019-04-01 | 2 | -14/+13 |
| | | | | 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. | ||||
* | Enable room version v3 | Erik Johnston | 2019-01-29 | 1 | -1/+1 |
| | |||||
* | Drop vdh support | Erik Johnston | 2019-01-29 | 1 | -1/+1 |
| | |||||
* | Pass through room version to event auth | Erik Johnston | 2019-01-25 | 3 | -9/+21 |
| | |||||
* | Merge pull request #4307 from matrix-org/erikj/v2_rooms | Richard van der Hoff | 2018-12-24 | 1 | -1/+3 |
|\ | | | | | Add v2 room version | ||||
| * | Add v2 room version | Erik Johnston | 2018-12-18 | 1 | -1/+3 |
| | | |||||
* | | Workaround for non-ascii event ids (#4241) | Richard van der Hoff | 2018-12-03 | 1 | -1/+3 |
|/ | | | | | | It turns out that we accept events with non-ascii IDs, which would later cause an explosion during state res. Fixes #4226 | ||||
* | Add helpers for getting prev and auth events (#4139) | Erik Johnston | 2018-11-06 | 2 | -9/+9 |
| | | | | | | | * Add helpers for getting prev and auth events This is in preparation for allowing the event format to change between room versions. | ||||
* | Fix None exception in state res v2 | Erik Johnston | 2018-11-02 | 1 | -0/+4 |
| | |||||
* | Add STATE_V2_TEST room version | Erik Johnston | 2018-11-01 | 1 | -1/+1 |
| | |||||
* | Rename resolve_events_with_factory | Erik Johnston | 2018-10-24 | 3 | -9/+9 |
| | |||||
* | Add v2 state res algorithm. | Erik Johnston | 2018-10-16 | 2 | -18/+613 |
| | | | | We hook this up to the vdh test room version. | ||||
* | Logging improvements | Richard van der Hoff | 2018-09-26 | 1 | -2/+12 |
| | | | | Some logging tweaks to help with debugging incoming federation transactions | ||||
* | Fix some instances of ExpiringCache not expiring cache items | Erik Johnston | 2018-09-21 | 1 | -9/+0 |
| | | | | | | | | ExpiringCache required that `start()` be called before it would actually start expiring entries. A number of places didn't do that. This PR removes `start` from ExpiringCache, and automatically starts backround reaping process on creation instead. | ||||
* | Remove unnecessary resolve_events_with_state_map | Erik Johnston | 2018-08-22 | 2 | -56/+6 |
| | | | | | We only ever used the synchronous resolve_events_with_state_map in one place, which is trivial to replace with the async version. | ||||
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-08-20 | 1 | -3/+3 |
| | | | | erikj/refactor_state_handler | ||||
* | Remove redundant room_version checks | Erik Johnston | 2018-08-20 | 1 | -14/+3 |
| | |||||
* | Add fast path in state res for zero prev events | Erik Johnston | 2018-08-09 | 1 | -1/+6 |
| | |||||
* | Choose state algorithm based on room version | Erik Johnston | 2018-08-09 | 1 | -11/+93 |
| | |||||
* | Refactor state module | Erik Johnston | 2018-08-09 | 2 | -0/+895 |
We split out the actual state resolution algorithm to prepare for having multiple versions. |