Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Make presence use cached users/hosts in room | Erik Johnston | 2017-05-16 | 2 | -4/+4 |
| | |||||
* | Merge pull request #2224 from matrix-org/erikj/prefill_state | Erik Johnston | 2017-05-16 | 3 | -9/+26 |
|\ | | | | | Prefill state caches | ||||
| * | Remove spurious merge artifacts | Erik Johnston | 2017-05-16 | 1 | -13/+0 |
| | | |||||
| * | Take a copy before prefilling, as it may be a frozendict | Erik Johnston | 2017-05-16 | 1 | -1/+1 |
| | | |||||
| * | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/prefill_state | Erik Johnston | 2017-05-15 | 5 | -1/+29 |
| |\ | |||||
| * | | Update comment | Erik Johnston | 2017-05-15 | 1 | -1/+2 |
| | | | |||||
| * | | Comments | Erik Johnston | 2017-05-15 | 2 | -3/+6 |
| | | | |||||
| * | | Add more granular event send metrics | Erik Johnston | 2017-05-15 | 1 | -0/+12 |
| | | | |||||
| * | | Prefill state caches | Erik Johnston | 2017-05-15 | 3 | -6/+20 |
| | | | |||||
* | | | Merge pull request #2218 from matrix-org/rav/event_search_index | Richard van der Hoff | 2017-05-16 | 4 | -12/+63 |
|\ \ \ | |_|/ |/| | | Add an index to event_search | ||||
| * | | Add a comment to old delta | Richard van der Hoff | 2017-05-11 | 1 | -0/+4 |
| | | | |||||
| * | | Don't create event_search index on sqlite | Richard van der Hoff | 2017-05-11 | 2 | -3/+11 |
| | | | | | | | | | | | | ... because the table is virtual | ||||
| * | | Add more logging for purging | Richard van der Hoff | 2017-05-11 | 1 | -7/+14 |
| | | | | | | | | | | | | Log the number of events we will be deleting at info. | ||||
| * | | Add an index to event_search | Richard van der Hoff | 2017-05-11 | 3 | -3/+35 |
| |/ | | | | | | | - to make the purge API quicker | ||||
* | | Merge pull request #2221 from psaavedra/sync_timeline_limit_filter_by_name | Erik Johnston | 2017-05-15 | 4 | -0/+26 |
|\ \ | | | | | | | Configurable maximum number of events requested by /sync and /messages | ||||
| * | | Fixed syntax nits | Pablo Saavedra | 2017-05-15 | 2 | -5/+6 |
| | | | |||||
| * | | Fixed implementation errors | Pablo Saavedra | 2017-05-15 | 2 | -3/+7 |
| | | | | | | | | | | | | | | | * Added HS as property in SyncRestServlet * Fixed set_timeline_upper_limit function implementat¡ion | ||||
| * | | Configurable maximum number of events requested by /sync and /messages (#2220) | Pablo Saavedra | 2017-05-13 | 4 | -0/+21 |
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set the limit on the returned events in the timeline in the get and sync operations. The default value is -1, means no upper limit. For example, using `filter_timeline_limit: 5000`: POST /_matrix/client/r0/user/user:id/filter { room: { timeline: { limit: 1000000000000000000 } } } GET /_matrix/client/r0/user/user:id/filter/filter:id { room: { timeline: { limit: 5000 } } } The server cuts down the room.timeline.limit. | ||||
* / | Don't log exceptions for NotRetryingDestination | Erik Johnston | 2017-05-15 | 1 | -1/+3 |
|/ | |||||
* | Merge pull request #2214 from matrix-org/rav/hurry_up_purge | Richard van der Hoff | 2017-05-11 | 1 | -20/+42 |
|\ | | | | | When purging, don't de-delta state groups we're about to delete | ||||
| * | Tidy purge code and add some comments | Richard van der Hoff | 2017-05-11 | 1 | -12/+19 |
| | | | | | | | | Try to make this clearer with more comments and some variable renames | ||||
| * | Don't de-delta state groups we're about to delete | Richard van der Hoff | 2017-05-10 | 1 | -11/+9 |
| | | |||||
| * | add some logging to purge_history | Richard van der Hoff | 2017-05-10 | 1 | -4/+21 |
| | | |||||
* | | Modify condition on empty localpart | Luke Barnard | 2017-05-10 | 1 | -1/+1 |
| | | |||||
* | | Modify register/available to be GET with query param | Luke Barnard | 2017-05-10 | 2 | -5/+11 |
|/ | | | | | | | - GET is now the method for register/available - a query parameter "username" is now used Also, empty usernames are now handled with an error message on registration or via register/available: `User ID cannot be empty` | ||||
* | Merge pull request #2208 from matrix-org/erikj/ratelimit_overrid | Erik Johnston | 2017-05-10 | 6 | -19/+93 |
|\ | | | | | Add per user ratelimiting overrides | ||||
| * | Add per user ratelimiting overrides | Erik Johnston | 2017-05-10 | 6 | -19/+93 |
| | | |||||
* | | Merge pull request #2206 from matrix-org/rav/one_time_key_upload_change_sig | Richard van der Hoff | 2017-05-10 | 3 | -36/+107 |
|\ \ | | | | | | | Allow clients to upload one-time-keys with new sigs | ||||
| * | | Replace some instances of preserve_context_over_deferred | Richard van der Hoff | 2017-05-09 | 1 | -3/+3 |
| | | | |||||
| * | | Do some logging when one-time-keys get claimed | Richard van der Hoff | 2017-05-09 | 2 | -0/+20 |
| | | | | | | | | | | | | | | | might help us figure out if https://github.com/vector-im/riot-web/issues/3868 has happened. | ||||
| * | | Allow clients to upload one-time-keys with new sigs | Richard van der Hoff | 2017-05-09 | 2 | -33/+84 |
| |/ | | | | | | | | | | | | | When a client retries a key upload, don't give an error if the signature has changed (but the key is the same). Fixes https://github.com/vector-im/riot-android/issues/1208, hopefully. | ||||
* / | Change register/available to POST (from GET) | Luke Barnard | 2017-05-10 | 1 | -1/+1 |
|/ | |||||
* | Merge branch 'release-v0.21.0' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-05-08 | 1 | -1/+1 |
|\ | |||||
| * | Bump version and changelog v0.21.0-rc2 | Erik Johnston | 2017-05-08 | 1 | -1/+1 |
| | | |||||
| * | Bump version and changelog v0.21.0-rc1 | Erik Johnston | 2017-05-08 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #2203 from matrix-org/erikj/event_cache_hit_ratio | Erik Johnston | 2017-05-08 | 3 | -5/+27 |
|\ \ | | | | | | | Don't update event cache hit ratio from get_joined_users | ||||
| * | | Expand docstring a bit | Erik Johnston | 2017-05-08 | 1 | -1/+7 |
| | | | |||||
| * | | Don't update event cache hit ratio from get_joined_users | Erik Johnston | 2017-05-08 | 3 | -5/+21 |
| | | | | | | | | | | | | | | | Otherwise the hit ration of plain get_events gets completely skewed by calls to get_joined_users* functions. | ||||
* | | | Merge pull request #2201 from matrix-org/erikj/store_device_cache | Erik Johnston | 2017-05-08 | 1 | -3/+22 |
|\ \ \ | | | | | | | | | Cache check to see if device exists | ||||
| * | | | Add missing yields | Erik Johnston | 2017-05-08 | 1 | -2/+4 |
| | | | | |||||
| * | | | Invalidate cache on device deletion | Erik Johnston | 2017-05-08 | 1 | -2/+6 |
| | | | | |||||
| * | | | Comment | Erik Johnston | 2017-05-08 | 1 | -0/+2 |
| | | | | |||||
| * | | | Cache check to see if device exists | Erik Johnston | 2017-05-08 | 1 | -1/+12 |
| |/ / | |||||
* / / | Cache one time key counts | Erik Johnston | 2017-05-08 | 1 | -0/+9 |
|/ / | |||||
* | | Increase client_ip cache size | Erik Johnston | 2017-05-08 | 1 | -0/+1 |
| | | |||||
* | | Merge pull request #2200 from matrix-org/erikj/revert_push | Erik Johnston | 2017-05-08 | 4 | -24/+53 |
|\ \ | | | | | | | Revert speed up push | ||||
| * | | Revert "Remove unused import" | Erik Johnston | 2017-05-08 | 1 | -0/+1 |
| | | | | | | | | | | | | This reverts commit ab37bef83bebd7cdaeb7cfd98553d18883d09103. | ||||
| * | | Revert "We don't care about forgotten rooms" | Erik Johnston | 2017-05-08 | 1 | -0/+12 |
| | | | | | | | | | | | | This reverts commit ad8b316939d59230526e60660caf9094cff62c8f. | ||||
| * | | Revert "Speed up filtering of a single event in push" | Erik Johnston | 2017-05-08 | 4 | -24/+40 |
| |/ | | | | | | | This reverts commit 421fdf74609439edaaffce117436e6a6df147841. | ||||
* | | Merge pull request #2190 from matrix-org/erikj/mark_remote_as_back_more | Erik Johnston | 2017-05-05 | 2 | -7/+9 |
|\ \ | | | | | | | Always mark remotes as up if we receive a signed request from them | ||||
| * | | Use preserve_fn and add logs | Erik Johnston | 2017-05-05 | 1 | -1/+3 |
| | | | |||||
| * | | Remove redundant reset of destination timers | Erik Johnston | 2017-05-05 | 1 | -7/+0 |
| | | | |||||
| * | | Always mark remotes as up if we receive a signed request from them | Erik Johnston | 2017-05-05 | 1 | -0/+7 |
| | | | |||||
* | | | Merge pull request #2189 from matrix-org/erikj/handle_remote_device_list | Erik Johnston | 2017-05-05 | 1 | -1/+28 |
|\ \ \ | |_|/ |/| | | Handle exceptions thrown in handling remote device list updates | ||||
| * | | Comment | Erik Johnston | 2017-05-05 | 1 | -0/+6 |
| | | | |||||
| * | | Add comment and TODO | Erik Johnston | 2017-05-05 | 1 | -0/+6 |
| | | | |||||
| * | | Handle exceptions thrown in handling remote device list updates | Erik Johnston | 2017-05-05 | 1 | -1/+16 |
| |/ | |||||
* | | Merge pull request #2192 from matrix-org/kegan/simple-http-client-timeouts | Kegsay | 2017-05-05 | 1 | -14/+21 |
|\ \ | | | | | | | Rewrite SimpleHttpClient.request to include timeouts | ||||
| * | | Remember how twisted works | Kegan Dougal | 2017-05-05 | 1 | -2/+2 |
| | | | |||||
| * | | Include the clock | Kegan Dougal | 2017-05-05 | 1 | -0/+1 |
| | | | |||||
| * | | Rewrite SimpleHttpClient.request to include timeouts | Kegan Dougal | 2017-05-05 | 1 | -13/+19 |
| | | | | | | | | | | | | Fixes #2191 | ||||
* | | | Merge pull request #2176 from matrix-org/erikj/faster_get_joined | Erik Johnston | 2017-05-05 | 1 | -16/+42 |
|\ \ \ | | | | | | | | | Make get_joined_users faster | ||||
| * | | | Fixes | Erik Johnston | 2017-05-05 | 1 | -3/+4 |
| | | | | |||||
| * | | | Add comment | Erik Johnston | 2017-05-04 | 1 | -0/+3 |
| | | | | |||||
| * | | | Make get_joined_users faster | Erik Johnston | 2017-05-03 | 1 | -16/+38 |
| | | | | |||||
* | | | | Merge pull request #2185 from matrix-org/erikj/smaller_caches | Erik Johnston | 2017-05-05 | 2 | -11/+35 |
|\ \ \ \ | | | | | | | | | | | Optimise caches for single key | ||||
| * | | | | Optimise caches with single key | Erik Johnston | 2017-05-04 | 1 | -9/+33 |
| | | | | | |||||
| * | | | | Reduce size of get_users_in_room | Erik Johnston | 2017-05-04 | 1 | -2/+2 |
| | |_|/ | |/| | | |||||
* | | | | Merge pull request #2174 from matrix-org/erikj/current_cache_hosts | Erik Johnston | 2017-05-05 | 4 | -5/+54 |
|\ \ \ \ | |_|_|/ |/| | | | Add cache for get_current_hosts_in_room | ||||
| * | | | Intern host strings | Erik Johnston | 2017-05-04 | 1 | -1/+2 |
| | | | | |||||
| * | | | Make caches bigger | Erik Johnston | 2017-05-04 | 1 | -1/+1 |
| | | | | |||||
| * | | | Fix comment and num args | Erik Johnston | 2017-05-04 | 2 | -2/+2 |
| | | | | |||||
| * | | | Add new storage functions to slave store | Erik Johnston | 2017-05-04 | 1 | -0/+3 |
| | | | | |||||
| * | | | Add cache for get_current_hosts_in_room | Erik Johnston | 2017-05-02 | 3 | -5/+50 |
| | |/ | |/| | |||||
* | | | Revert "Prefill state caches" | Erik Johnston | 2017-05-04 | 3 | -27/+9 |
| | | | |||||
* | | | Merge pull request #2183 from matrix-org/luke/username-availability | Luke Barnard | 2017-05-04 | 1 | -0/+41 |
|\ \ \ | |_|/ |/| | | Implement username availability checker | ||||
| * | | Appease the flake8 gods | Luke Barnard | 2017-05-03 | 1 | -5/+10 |
| | | | |||||
| * | | Implement username availability checker | Luke Barnard | 2017-05-03 | 1 | -0/+36 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Outlined here: https://github.com/vector-im/riot-web/issues/3605#issuecomment-298679388 ```HTTP GET /_matrix/.../register/available { "username": "desiredlocalpart123" } ``` If available, the response looks like ```HTTP HTTP/1.1 200 OK { "available": true } ``` Otherwise, ```HTTP HTTP/1.1 429 { "errcode": "M_LIMIT_EXCEEDED", "error": "Too Many Requests", "retry_after_ms": 2000 } ``` or ```HTTP HTTP/1.1 400 { "errcode": "M_USER_IN_USE", "error": "User ID already taken." } ``` or ```HTTP HTTP/1.1 400 { "errcode": "M_INVALID_USERNAME", "error": "Some reason for username being invalid" } ``` | ||||
* | | | Merge pull request #2147 from matrix-org/dbkr/http_request_propagate_error | David Baker | 2017-05-03 | 3 | -4/+41 |
|\ \ \ | | | | | | | | | Propagate errors sensibly from proxied IS requests | ||||
| * | | | No need for the exception variable | David Baker | 2017-05-03 | 1 | -1/+1 |
| | | | | |||||
| * | | | List caught expection types | David Baker | 2017-05-03 | 1 | -1/+1 |
| | | | | |||||
| * | | | Remove debugging | David Baker | 2017-04-26 | 1 | -2/+1 |
| | | | | |||||
| * | | | Revert accidental commit | David Baker | 2017-04-26 | 1 | -4/+4 |
| | | | | |||||
| * | | | Merge remote-tracking branch 'origin/develop' into ↵ | David Baker | 2017-04-26 | 15 | -109/+209 |
| |\ \ \ | | | | | | | | | | | | | | | | dbkr/http_request_propagate_error | ||||
| * | | | | Fix get_json | David Baker | 2017-04-26 | 1 | -5/+4 |
| | | | | | |||||
| * | | | | Use CodeMessageException subclass instead | David Baker | 2017-04-25 | 4 | -61/+51 |
| | | | | | | | | | | | | | | | | | | | | | | | | | Parse json errors from get_json client methods and throw special errors. | ||||
| * | | | | Need the HTTP status code | David Baker | 2017-04-21 | 1 | -5/+5 |
| | | | | | |||||
| * | | | | Do the same for get_json | David Baker | 2017-04-21 | 1 | -8/+21 |
| | | | | | |||||
| * | | | | Don't error for 3xx responses | David Baker | 2017-04-21 | 1 | -1/+1 |
| | | | | | |||||
| * | | | | Merge remote-tracking branch 'origin/develop' into ↵ | David Baker | 2017-04-21 | 6 | -1/+167 |
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | dbkr/http_request_propagate_error | ||||
| * | | | | | Propagate errors sensibly from proxied IS requests | David Baker | 2017-04-21 | 3 | -6/+42 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we're proxying Matrix endpoints, parse out Matrix error responses and turn them into SynapseErrors so they can be propagated sensibly upstream. | ||||
* | | | | | | Merge pull request #2175 from matrix-org/erikj/prefill_state | Erik Johnston | 2017-05-03 | 3 | -9/+27 |
|\ \ \ \ \ \ | | | | | | | | | | | | | | | Prefill state caches | ||||
| * | | | | | | Update comment | Erik Johnston | 2017-05-03 | 1 | -1/+2 |
| | | | | | | | |||||
| * | | | | | | Comments | Erik Johnston | 2017-05-03 | 2 | -3/+6 |
| | | | | | | | |||||
| * | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/prefill_state | Erik Johnston | 2017-05-03 | 6 | -3/+32 |
| |\ \ \ \ \ \ | |||||
| * | | | | | | | Prefill state caches | Erik Johnston | 2017-05-02 | 3 | -6/+18 |
| | |_|_|_|_|/ | |/| | | | | | |||||
* | | | | | | | Merge pull request #2170 from matrix-org/erikj/fed_hole_state | Erik Johnston | 2017-05-03 | 1 | -21/+12 |
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | Don't fetch state for missing events that we fetched | ||||
| * | | | | | | Merge together redundant calculations/logging | Erik Johnston | 2017-05-03 | 1 | -9/+2 |
| | | | | | | | |||||
| * | | | | | | Fixup | Erik Johnston | 2017-04-28 | 1 | -10/+4 |
| | | | | | | | |||||
| * | | | | | | Remove unncessary call in _get_missing_events_for_pdu | Erik Johnston | 2017-04-28 | 1 | -13/+11 |
| | | | | | | | |||||
| * | | | | | | Don't fetch state for missing events that we fetched | Erik Johnston | 2017-04-28 | 1 | -0/+6 |
| | | | | | | | |||||
* | | | | | | | Merge pull request #2178 from matrix-org/erikj/message_metrics | Erik Johnston | 2017-05-02 | 5 | -2/+29 |
|\ \ \ \ \ \ \ | |_|_|_|_|_|/ |/| | | | | | | Add more granular event send metrics | ||||
| * | | | | | | Add more granular event send metrics | Erik Johnston | 2017-05-02 | 5 | -2/+29 |
| | |/ / / / | |/| | | | | |||||
* | | | | | | Merge pull request #2180 from matrix-org/rav/fix_timeout_on_timeout | Richard van der Hoff | 2017-05-02 | 1 | -1/+1 |
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | Instantiate DeferredTimedOutError correctly | ||||
| * | | | | | Instantiate DeferredTimedOutError correctly | Richard van der Hoff | 2017-05-02 | 1 | -1/+1 |
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | Call `super` correctly, so that we correctly initialise the `errcode` field. Fixes https://github.com/matrix-org/synapse/issues/2179. | ||||
* | | | | | Merge pull request #2080 from matrix-org/erikj/filter_speed | Erik Johnston | 2017-04-28 | 4 | -40/+24 |
|\ \ \ \ \ | |/ / / / |/| | | | | Speed up filtering of a single event in push | ||||
| * | | | | Remove unused import | Erik Johnston | 2017-04-28 | 1 | -1/+0 |
| | | | | | |||||
| * | | | | We don't care about forgotten rooms | Erik Johnston | 2017-04-28 | 1 | -12/+0 |
| | | | | | |||||
| * | | | | Speed up filtering of a single event in push | Erik Johnston | 2017-04-28 | 4 | -40/+37 |
| | | | | | |||||
* | | | | | Merge pull request #2163 from matrix-org/erikj/fix_invite_state | Erik Johnston | 2017-04-27 | 3 | -7/+26 |
|\ \ \ \ \ | | | | | | | | | | | | | Fix invite state to always include all events | ||||
| * | | | | | Comment and remove spurious logging | Erik Johnston | 2017-04-27 | 2 | -1/+3 |
| | | | | | | |||||
| * | | | | | Fix tests | Erik Johnston | 2017-04-26 | 1 | -3/+3 |
| | | | | | | |||||
| * | | | | | Fix invite state to always include all events | Erik Johnston | 2017-04-26 | 3 | -7/+24 |
| |/ / / / | |||||
* | | | | | Merge pull request #2127 from APwhitehat/alreadystarted | Erik Johnston | 2017-04-27 | 1 | -0/+3 |
|\ \ \ \ \ | | | | | | | | | | | | | print something legible if synapse already running | ||||
| * | | | | | synctl.py: Check if synapse is already running | Anant Prakash | 2017-04-13 | 1 | -0/+3 |
| | |/ / / | |/| | | | |||||
* | | | | | Merge pull request #2131 from matthewjwolff/develop | Erik Johnston | 2017-04-27 | 2 | -2/+8 |
|\ \ \ \ \ | | | | | | | | | | | | | web_client_location documentation fix | ||||
| * | | | | | Queried CONDITIONAL_REQUIREMENTS | Matthew Wolff | 2017-04-18 | 1 | -2/+5 |
| | | | | | | |||||
| * | | | | | Fixed travis build failure | Matthew Wolff | 2017-04-17 | 1 | -3/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Matthew Wolff <matthewjwolff@gmail.com> | ||||
| * | | | | | web_server_root documentation fix | Matthew Wolff | 2017-04-17 | 2 | -2/+7 |
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Matthew Wolff <matthewjwolff@gmail.com> | ||||
* | | | | | | Fix bgupdate error if index already exists (#2167) | Richard van der Hoff | 2017-04-27 | 1 | -30/+53 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When creating a new table index in the background, guard against it existing already. Fixes https://github.com/matrix-org/synapse/issues/2135. Also, make sure we restore the autocommit flag when we're done, otherwise we get more failures from other operations later on. Fixes https://github.com/matrix-org/synapse/issues/1890 (hopefully). | ||||
* | | | | | | Merge pull request #2168 from matrix-org/erikj/federation_logging | Erik Johnston | 2017-04-27 | 1 | -2/+22 |
|\ \ \ \ \ \ | | | | | | | | | | | | | | | Add some extra logging for edge cases of federation | ||||
| * | | | | | | Typo | Erik Johnston | 2017-04-27 | 1 | -1/+1 |
| | | | | | | | |||||
| * | | | | | | Add some extra logging for edge cases of federation | Erik Johnston | 2017-04-27 | 1 | -2/+22 |
| | |_|/ / / | |/| | | | | |||||
* | | | | | | Merge pull request #2130 from APwhitehat/roomexists | Erik Johnston | 2017-04-27 | 1 | -1/+5 |
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | Check that requested room_id exists | ||||
| * | | | | | Check that requested room_id exists | Anant Prakash | 2017-04-14 | 1 | -1/+5 |
| | |/ / / | |/| | | | |||||
* | | | | | Make state caches cache in ascii | Erik Johnston | 2017-04-25 | 1 | -2/+3 |
| |_|_|/ |/| | | | |||||
* | | | | fix up | Erik Johnston | 2017-04-25 | 1 | -1/+2 |
| | | | | |||||
* | | | | Don't specify default as dict | Erik Johnston | 2017-04-25 | 1 | -1/+1 |
| | | | | |||||
* | | | | Comment | Erik Johnston | 2017-04-25 | 1 | -0/+2 |
| | | | | |||||
* | | | | Reduce size of joined_user cache | Erik Johnston | 2017-04-25 | 4 | -11/+40 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The _get_joined_users_from_context cache stores a mapping from user_id to avatar_url and display_name. Instead of storing those in a dict, store them in a namedtuple as that uses much less memory. We also try converting the string to ascii to further reduce the size. | ||||
* | | | | Reduce _get_state_group_for_event cache size | Erik Johnston | 2017-04-25 | 1 | -1/+1 |
| | | | | |||||
* | | | | Merge pull request #2158 from matrix-org/erikj/reduce_cache_size | Erik Johnston | 2017-04-25 | 3 | -24/+28 |
|\ \ \ \ | | | | | | | | | | | Reduce cache size by not storing deferreds | ||||
| * | | | | Remove DEBUG_CACHES | Erik Johnston | 2017-04-25 | 1 | -2/+0 |
| | | | | | |||||
| * | | | | Reduce cache size by not storing deferreds | Erik Johnston | 2017-04-25 | 2 | -22/+28 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the cache descriptors store deferreds rather than raw values, this is a simple way of triggering only one database hit and sharing the result if two callers attempt to get the same value. However, there are a few caches that simply store a mapping from string to string (or int). These caches can have a large number of entries, under the assumption that each entry is small. However, the size of a deferred (specifically the size of ObservableDeferred) is signigicantly larger than that of the raw value, 2kb vs 32b. This PR therefore changes the cache descriptors to store the raw values rather than the deferreds. As a side effect cached storage function now either return a deferred or the actual value, as the cached list decriptor already does. This is fine as we always end up just yield'ing on the returned value eventually, which handles that case correctly. | ||||
* | | | | | Fix code for reporting old verify keys in synapse | Mark Haines | 2017-04-24 | 1 | -3/+2 |
| | | | | | |||||
* | | | | | Merge pull request #2145 from matrix-org/rav/reject_invite_to_unreachable_server | Richard van der Hoff | 2017-04-24 | 5 | -44/+124 |
|\ \ \ \ \ | |/ / / / |/| | | | | Fix rejection of invites to unreachable servers | ||||
| * | | | | Try harder when sending leave events | Richard van der Hoff | 2017-04-21 | 1 | -1/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | When we're rejecting invites, ignore the backoff data, so that we have a better chance of not getting the room out of sync. | ||||
| * | | | | Remove redundant try/except clauses | Richard van der Hoff | 2017-04-21 | 1 | -23/+11 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `except SynapseError` clauses were pointless because the wrapped functions would never throw a `SynapseError` (they either throw a `CodeMessageException` or a `RuntimeError`). The `except CodeMessageException` is now also pointless because the caller treats all exceptions equally, so we may as well just throw the `CodeMessageException`. | ||||
| * | | | | Broaden the conditions for locally_rejecting invites | Richard van der Hoff | 2017-04-21 | 1 | -1/+7 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic for marking invites as locally rejected was all well and good, but didn't happen when the remote server returned a 500, or wasn't reachable, or had no DNS, or whatever. Just expand the except clause to catch everything. Fixes https://github.com/matrix-org/synapse/issues/761. | ||||
| * | | | | Remove redundant function | Richard van der Hoff | 2017-04-21 | 1 | -10/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | inline `reject_remote_invite`, which only existed to make tracing the callflow more difficult. | ||||
| * | | | | Fix some lies, and other clarifications, in docstrings | Richard van der Hoff | 2017-04-21 | 3 | -9/+82 |
| | |_|/ | |/| | | | | | | | | | | | | | | The documentation on get_json has been wrong ever since the very first commit to synapse... | ||||
* | | | | Merge pull request #2155 from matrix-org/erikj/string_intern | Erik Johnston | 2017-04-24 | 1 | -18/+11 |
|\ \ \ \ | | | | | | | | | | | Only intern ascii strings | ||||
| * | | | | Only intern ascii strings | Erik Johnston | 2017-04-24 | 1 | -18/+11 |
| |/ / / | |||||
* / / / | Remove unused cache | Erik Johnston | 2017-04-24 | 2 | -9/+1 |
|/ / / | |||||
* | / | m.read_marker -> m.fully_read (#2128) | Luke Barnard | 2017-04-18 | 3 | -9/+9 |
| |/ |/| | | | | | | | | | Also: - change the REST endpoint to have a "S" on the end (so it's now /read_markers) - change the content of the m.read_up_to event to have the key "event_id" instead of "marker". | ||||
* | | Merge pull request #2120 from matrix-org/luke/read-markers | Luke Barnard | 2017-04-13 | 6 | -1/+167 |
|\ \ | |/ |/| | Implement Read Marker API | ||||
| * | Correct logic in is_event_after | Luke Barnard | 2017-04-13 | 1 | -1/+1 |
| | | |||||
| * | Simplify is_event_after logic | Luke Barnard | 2017-04-12 | 2 | -12/+6 |
| | | |||||
| * | More null-guard changes | Luke Barnard | 2017-04-12 | 1 | -4/+4 |
| | | |||||
| * | Remove Unused ref to hs | Luke Barnard | 2017-04-12 | 1 | -1/+0 |
| | | |||||
| * | Move a space | Luke Barnard | 2017-04-12 | 1 | -2/+2 |
| | | |||||
| * | Only notify user, not entire room | Luke Barnard | 2017-04-12 | 1 | -3/+1 |
| | | |||||
| * | Remove comment, simplify null-guard | Luke Barnard | 2017-04-12 | 1 | -4/+1 |
| | | |||||
| * | Handle no previous RM | Luke Barnard | 2017-04-12 | 1 | -1/+4 |
| | | |||||
| * | travis flake8.. | Luke Barnard | 2017-04-11 | 1 | -0/+1 |
| | | |||||
| * | flake8 | Luke Barnard | 2017-04-11 | 1 | -1/+0 |
| | | |||||
| * | Refactor event ordering check to events store | Luke Barnard | 2017-04-11 | 2 | -28/+32 |
| | | |||||
| * | Copyright | Luke Barnard | 2017-04-11 | 1 | -1/+1 |
| | | |||||
| * | flake8 | Luke Barnard | 2017-04-11 | 3 | -5/+4 |
| | | |||||
| * | Finish implementing RM endpoint | Luke Barnard | 2017-04-11 | 5 | -48/+67 |
| | | | | | | | | | | - This change causes a 405 to be sent if "m.read_marker" is set via /account_data - This also fixes-up the RM endpoint so that it actually Works. | ||||
| * | Initial commit of RM server-side impl | lukebarnard | 2017-04-11 | 2 | -0/+153 |
| | | | | | | | | (See https://docs.google.com/document/d/1UWqdS-e1sdwkLDUY0wA4gZyIkRp-ekjsLZ8k6g_Zvso/edit#heading=h.lndohpg8at5u) | ||||
* | | Merge pull request #2115 from matrix-org/erikj/dedupe_federation_repl | Erik Johnston | 2017-04-12 | 7 | -130/+203 |
|\ \ | | | | | | | Reduce federation replication traffic | ||||
| * | | Comment | Erik Johnston | 2017-04-12 | 1 | -2/+1 |
| | | | |||||
| * | | Reuse get_interested_parties | Erik Johnston | 2017-04-12 | 2 | -19/+8 |
| | | | |||||
| * | | Move get_presence_list_* to SlaveStore | Erik Johnston | 2017-04-11 | 3 | -24/+13 |
| | | | |||||
| * | | Comment | Erik Johnston | 2017-04-11 | 2 | -1/+9 |
| | | | |||||
| * | | Move get_interested_parties | Erik Johnston | 2017-04-11 | 2 | -38/+36 |
| | | | |||||
| * | | Comments | Erik Johnston | 2017-04-11 | 2 | -9/+10 |
| | | | |||||
| * | | Move get_interested_remotes back to presence handler | Erik Johnston | 2017-04-11 | 2 | -38/+55 |
| | | | |||||
| * | | Comments | Erik Johnston | 2017-04-11 | 1 | -1/+14 |
| | | | |||||
| * | | Reduce federation presence replication traffic | Erik Johnston | 2017-04-10 | 6 | -80/+139 |
| | | | | | | | | | | | | | | | | | | | | | | | | This is mainly done by moving the calculation of where to send presence updates from the presence handler to the transaction queue, so we only need to send the presence event (and not the destinations) across the replication connection. Before we were duplicating by sending the full state across once per destination. | ||||
* | | | Merge pull request #2121 from matrix-org/paul/sent-transactions-metric | Paul Evans | 2017-04-12 | 1 | -0/+3 |
|\ \ \ | | | | | | | | | Add a counter metric for successfully-sent transactions | ||||
| * | | | Add a counter metric for successfully-sent transactions | Paul "LeoNerd" Evans | 2017-04-11 | 1 | -0/+3 |
| | | | | |||||
* | | | | Merge pull request #2116 from matrix-org/erikj/dedupe_federation_repl2 | Erik Johnston | 2017-04-12 | 1 | -6/+24 |
|\ \ \ \ | | | | | | | | | | | Dedupe KeyedEdu and Devices federation repl traffic | ||||
| * | | | | Add some comments | Erik Johnston | 2017-04-12 | 1 | -0/+15 |
| | | | | | |||||
| * | | | | Use generators | Erik Johnston | 2017-04-10 | 1 | -2/+2 |
| | | | | | |||||
| * | | | | Dedupe KeyedEdu and Devices federation repl traffic | Erik Johnston | 2017-04-10 | 1 | -6/+9 |
| | |/ / | |/| | | |||||
* | | | | Merge pull request #2117 from matrix-org/erikj/remove_http_replication | Erik Johnston | 2017-04-12 | 5 | -753/+0 |
|\ \ \ \ | | | | | | | | | | | Remove HTTP replication APIs | ||||
| * | | | | Remove HTTP replication APIs | Erik Johnston | 2017-04-11 | 5 | -753/+0 |
| |/ / / | |||||
* | | | | Merge pull request #2118 from matrix-org/erikj/no_devices | Erik Johnston | 2017-04-12 | 1 | -0/+3 |
|\ \ \ \ | |_|/ / |/| | | | Fix getting latest device IP for user with no devices | ||||
| * | | | Bail on where clause instead | Erik Johnston | 2017-04-11 | 1 | -3/+4 |
| | | | | |||||
| * | | | Don't bother with outer check for now | Erik Johnston | 2017-04-11 | 1 | -3/+0 |
| | | | | |||||
| * | | | Fix getting latest device IP for user with no devices | Erik Johnston | 2017-04-11 | 1 | -0/+5 |
| | |/ | |/| | |||||
* | | | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-04-11 | 2 | -5/+5 |
|\ \ \ | |/ / |/| | | |||||
| * | | When we do an invite rejection, save the signed leave event to the db | Richard van der Hoff | 2017-04-07 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During a rejection of an invite received over federation, we ask a remote server to make us a `leave` event, then sign it, then send that with `send_leave`. We were saving the *unsigned* version of the event (which has a different event id to the signed version) to our db (and sending it to the clients), whereas other servers in the room will have seen the *signed* version. We're not aware of any actual problems that caused, except that it makes the database confusing to look at and generally leaves the room in a weird state. | ||||
| * | | Bump version and changelog | Erik Johnston | 2017-04-07 | 1 | -1/+1 |
| | | | |||||
* | | | trust a hypothetical future riot.im IS | Matthew Hodgson | 2017-04-10 | 1 | -0/+1 |
| |/ |/| | |||||
* | | Typo | Erik Johnston | 2017-04-10 | 1 | -1/+1 |
| | | |||||
* | | Merge pull request #2102 from DanielDent/add-auth-email | David Baker | 2017-04-10 | 2 | -1/+21 |
|\ \ | | | | | | | Support authenticated SMTP | ||||
| * | | Support authenticated SMTP | Daniel Dent | 2017-04-05 | 2 | -1/+21 |
| | | | | | | | | | | | | | | | | | | Closes (SYN-714) #1385 Signed-off-by: Daniel Dent <matrixcontrib@contactdaniel.net> | ||||
* | | | Merge pull request #2109 from matrix-org/erikj/send_queue_fix | Erik Johnston | 2017-04-10 | 3 | -92/+245 |
|\ \ \ | | | | | | | | | Fix up federation SendQueue and document types | ||||
| * | | | Rename variable | Erik Johnston | 2017-04-10 | 1 | -7/+7 |
| | | | | |||||
| * | | | Revert to sending the same data type as before | Erik Johnston | 2017-04-10 | 1 | -2/+2 |
| | | | | |||||
| * | | | Change name | Erik Johnston | 2017-04-10 | 1 | -2/+2 |
| | | | | |||||
| * | | | Comments | Erik Johnston | 2017-04-10 | 2 | -6/+8 |
| | | | | |||||
| * | | | Comment | Erik Johnston | 2017-04-07 | 1 | -2/+15 |
| | | | | |||||
| * | | | Add logging | Erik Johnston | 2017-04-07 | 1 | -0/+8 |
| | | | | |||||
| * | | | Fix up federation SendQueue and document types | Erik Johnston | 2017-04-07 | 2 | -91/+221 |
| | | | | |||||
* | | | | Up replication ping timeout | Erik Johnston | 2017-04-10 | 1 | -2/+4 |
| | | | | |||||
* | | | | Comment | Erik Johnston | 2017-04-07 | 1 | -0/+9 |
| | | | | |||||
* | | | | Speed up get_current_state_ids | Erik Johnston | 2017-04-07 | 1 | -10/+17 |
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using _simple_select_list is fairly expensive for functions that return a lot of rows and/or get called a lot. (This is because it carefully constructs a list of dicts). get_current_state_ids gets called a lot on startup and e.g. when the IRC bridge decided to send tonnes of joins/leaves (as it invalidates the cache). We therefore replace it with a custon txn function that builds up the final result dict without building up and intermediate representation. | ||||
* | | | Merge pull request #2107 from HarHarLinks/patch-1 | Erik Johnston | 2017-04-07 | 1 | -1/+1 |
|\ \ \ | | | | | | | | | fix typo in synctl help | ||||
| * | | | fix typo in synctl help | Kim Brose | 2017-04-06 | 1 | -1/+1 |
| | | | | |||||
* | | | | Merge pull request #2103 from matrix-org/erikj/no-double-encode | Erik Johnston | 2017-04-07 | 5 | -47/+88 |
|\ \ \ \ | | | | | | | | | | | Don't double encode replication data | ||||
| * | | | | Document types of the replication streams | Erik Johnston | 2017-04-06 | 1 | -28/+76 |
| | | | | | |||||
| * | | | | Don't double json encode typing replication data | Erik Johnston | 2017-04-05 | 2 | -6/+2 |
| | | | | | |||||
| * | | | | Don't double json encode federation replication data | Erik Johnston | 2017-04-05 | 2 | -13/+10 |
| | | | | | |||||
* | | | | | Use iteritems | Erik Johnston | 2017-04-06 | 1 | -2/+2 |
| | | | | | |||||
* | | | | | Merge pull request #2106 from matrix-org/erikj/reduce_user_sync | Erik Johnston | 2017-04-06 | 1 | -4/+43 |
|\ \ \ \ \ | | | | | | | | | | | | | Reduce rate of USER_SYNC repl commands | ||||
| * | | | | | Comment | Erik Johnston | 2017-04-06 | 1 | -1/+1 |
| | | | | | | |||||
| * | | | | | Docs | Erik Johnston | 2017-04-06 | 1 | -0/+7 |
| | | | | | | |||||
| * | | | | | Don't immediately notify the master about users whose syncs have gone away | Erik Johnston | 2017-04-05 | 1 | -4/+36 |
| |/ / / / | |||||
* | | | | | Fix incorrect type when using InvalidateCacheCommand | Erik Johnston | 2017-04-06 | 1 | -1/+1 |
| | | | | | |||||
* | | | | | Add log lines | Erik Johnston | 2017-04-05 | 1 | -1/+2 |
| | | | | | |||||
* | | | | | Rearrange metrics | Erik Johnston | 2017-04-05 | 2 | -19/+31 |
| | | | | | |||||
* | | | | | Fix typo | Erik Johnston | 2017-04-05 | 1 | -2/+2 |
| | | | | | |||||
* | | | | | Fixup some metrics for tcp repl | Erik Johnston | 2017-04-05 | 2 | -0/+19 |
|/ / / / | |||||
* | | | | Merge pull request #2097 from matrix-org/erikj/repl_tcp_client | Erik Johnston | 2017-04-05 | 20 | -574/+580 |
|\ \ \ \ | | | | | | | | | | | Move to using TCP replication | ||||
| * | | | | Add comment | Erik Johnston | 2017-04-04 | 1 | -0/+5 |
| | | | | | |||||
| * | | | | Add the appropriate amount of preserve_fn | Erik Johnston | 2017-04-04 | 4 | -17/+19 |
| | | | | | |||||
| * | | | | Remove unused worker config option | Erik Johnston | 2017-04-04 | 1 | -1/+0 |
| | | | | | |||||
| * | | | | Shuffle and comment synchrotron presence | Erik Johnston | 2017-04-04 | 1 | -9/+11 |
| | | | | | |||||
| * | | | | Move where we ack federation | Erik Johnston | 2017-04-04 | 1 | -7/+16 |
| | | | | | |||||
| * | | | | Update all the workers and master to use TCP replication | Erik Johnston | 2017-04-03 | 9 | -401/+259 |
| | | | | | |||||
| * | | | | Change slave storage to use new replication interface | Erik Johnston | 2017-04-03 | 10 | -171/+106 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As the TCP replication uses a slightly different API and streams than the HTTP replication. This breaks HTTP replication. | ||||
| * | | | | Add basic replication client handler and factory | Erik Johnston | 2017-04-03 | 1 | -0/+196 |
| | | | | | |||||
* | | | | | Deduplicate new deviceinbox rows for replication | Erik Johnston | 2017-04-04 | 1 | -4/+7 |
| |_|/ / |/| | | | |||||
* | | | | Merge pull request #2098 from matrix-org/erikj/repl_tcp_fix | Erik Johnston | 2017-04-04 | 3 | -6/+15 |
|\ \ \ \ | | | | | | | | | | | Advance replication streams even if nothing is listening | ||||
| * | | | | Advance replication streams even if nothing is listening | Erik Johnston | 2017-04-04 | 3 | -6/+15 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise the streams don't advance and steadily fall behind, so when a worker does connect either a) they'll be streamed lots of old updates or b) the connection will fail as the streams are too far behind. | ||||
* | | | | | Fiddle tcp replication logging | Erik Johnston | 2017-04-04 | 1 | -2/+2 |
|/ / / / | |||||
* | | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2017-04-04 | 17 | -152/+228 |
|\ \ \ \ | |/ / / |/| | | | | | | | erikj/repl_tcp_server | ||||
| * | | | Merge pull request #2095 from matrix-org/rav/cull_log_preserves | Richard van der Hoff | 2017-04-03 | 4 | -43/+31 |
| |\ \ \ | | | | | | | | | | | Cull spurious PreserveLoggingContexts | ||||
| | * | | | 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. | ||||
| | * | | | Remove more spurious `PreserveLoggingContext`s | Richard van der Hoff | 2017-04-03 | 1 | -24/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | Remove `PreserveLoggingContext` around calls to `Notifier.on_new_room_event`; there is no problem if the logcontext is set when calling it. | ||||
| | * | | | Remove spurious PreserveLoggingContext | Richard van der Hoff | 2017-04-03 | 1 | -6/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | In `on_new_room_event`, remove `PreserveLoggingContext` - we can call its subroutines with the logcontext set. | ||||
| | * | | | preserve_fn some deferred-returning things | Richard van der Hoff | 2017-04-03 | 1 | -2/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | In `Notifier._on_new_room_event`, `preserve_fn` around its subroutines which return deferreds, so that it is safe to call it with an active logcontext. | ||||
| | * | | | Fix fixme in preserve_fn | Richard van der Hoff | 2017-04-03 | 1 | -5/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | `preserve_fn` is no longer used as a decorator anywhere, so we can safely fix a fixme therein. | ||||
| | * | | | Remove spurious @preserve_fn decorators | Richard van der Hoff | 2017-04-03 | 1 | -5/+0 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove `@preserve_fn` decorators on `on_new_room_event`, `_notify_pending_new_room_events`, `_on_new_room_event`, `on_new_event`, and `on_new_replication_data` - none of these functions return a deferred, and the decorator does nothing unless the wrapped function returns a deferred, so the decorator was a no-op. | ||||
| * | | | | Merge remote-tracking branch 'origin/release-v0.20.0' into develop | Richard van der Hoff | 2017-04-03 | 2 | -5/+19 |
| |\ \ \ \ | | | |_|/ | | |/| | | |||||
| | * | | | Accept join events from all servers | Richard van der Hoff | 2017-04-03 | 2 | -5/+19 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure that we accept join events from any server, rather than just the origin server, to make the federation join dance work correctly. (Fixes #1893). | ||||
| * | | | | Merge branch 'release-v0.20.0' of github.com:matrix-org/synapse into develop | Erik Johnston | 2017-04-03 | 1 | -1/+1 |
| |\| | | | | |/ / | |/| | | |||||
| | * | | Bump version and changelog v0.20.0-rc1 | Erik Johnston | 2017-03-30 | 1 | -1/+1 |
| | | | | |||||
| * | | | Merge pull request #2078 from APwhitehat/assertuserfriendly | Erik Johnston | 2017-03-31 | 1 | -1/+2 |
| |\ \ \ | | | | | | | | | | | add user friendly report of assertion error in synctl.py | ||||
| | * | | | add user friendly report of assertion error in synctl.py | Anant Prakash | 2017-03-29 | 1 | -1/+2 |
| | | | | | | | | | | | | | | | | | | | | Signed-off-by: Anant Prakash <anantprakashjsr@gmail.com> | ||||
| * | | | | Merge pull request #2011 from matrix-org/matthew/turn_allow_guests | Erik Johnston | 2017-03-31 | 2 | -1/+12 |
| |\ \ \ \ | | | | | | | | | | | | | add setting (on by default) to support TURN for guests | ||||
| | * | | | | typo | Matthew Hodgson | 2017-03-15 | 1 | -1/+1 |
| | | | | | | |||||
| | * | | | | set default for turn_allow_guests correctly | Matthew Hodgson | 2017-03-15 | 1 | -1/+1 |
| | | | | | | |||||
| | * | | | | add setting (on by default) to support TURN for guests | Matthew Hodgson | 2017-03-15 | 2 | -1/+12 |
| | | | | | | |||||
| * | | | | | Merge pull request #1986 from matrix-org/matthew/enable_guest_3p | Erik Johnston | 2017-03-31 | 1 | -4/+4 |
| |\ \ \ \ \ | | | | | | | | | | | | | | | enable guest access for the 3pl/3pid APIs | ||||
| | * | | | | | switch to allow_guest=True for authing 3Ps as per PR feedback | Matthew Hodgson | 2017-03-31 | 1 | -0/+8 |
| | | | | | | |