Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | pep8 | Neil Johnson | 2018-03-29 | 1 | -2/+4 |
| | |||||
* | Remove need for sqlite specific query | Neil Johnson | 2018-03-29 | 1 | -30/+57 |
| | |||||
* | fix pep8 errors | Neil Johnson | 2018-03-28 | 1 | -3/+0 |
| | |||||
* | remove twisted deferral cruft | Neil Johnson | 2018-03-28 | 1 | -6/+3 |
| | |||||
* | bump schema version | Neil Johnson | 2018-03-28 | 1 | -1/+1 |
| | |||||
* | Support multi client R30 for psql | Neil Johnson | 2018-03-28 | 2 | -9/+31 |
| | |||||
* | rename stat to future proof | Neil Johnson | 2018-03-28 | 1 | -1/+1 |
| | |||||
* | Add user_ips last seen index | Neil Johnson | 2018-03-28 | 2 | -0/+24 |
| | |||||
* | No need to cast in count_daily_users | Neil Johnson | 2018-03-28 | 1 | -2/+2 |
| | |||||
* | query and call for r30 stats | Neil Johnson | 2018-03-28 | 2 | -0/+38 |
| | |||||
* | count_daily_users failed if db was sqlite due to type failure - presumably ↵ | Neil Johnson | 2018-03-28 | 1 | -1/+1 |
| | | | | this prevcented all sqlite homeservers reporting home | ||||
* | Merge pull request #3017 from matrix-org/erikj/add_cache_control_headers | Erik Johnston | 2018-03-27 | 1 | -0/+1 |
|\ | | | | | Add Cache-Control headers to all JSON APIs | ||||
| * | Add Cache-Control headers to all JSON APIs | Erik Johnston | 2018-03-21 | 1 | -0/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | It is especially important that sync requests don't get cached, as if a sync returns the same token given then the client will call sync with the same parameters again. If the previous response was cached it will get reused, resulting in the client tight looping making the same request and never making any progress. In general, clients will expect to get up to date data when requesting APIs, and so its safer to do a blanket no cache policy than only whitelisting APIs that we know will break things if they get cached. | ||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2018-03-26 | 1 | -1/+1 |
|\ \ | |||||
| * | | Bum version and changelog | Erik Johnston | 2018-03-26 | 1 | -1/+1 |
| | | | |||||
| * | | Merge branch 'erikj/simplejson_replication' of github.com:matrix-org/synapse ↵ | Erik Johnston | 2018-03-26 | 1 | -7/+9 |
| |\| | | | | | | | | | | into release-v0.27.0 | ||||
| * | | Bump version and changelog | Erik Johnston | 2018-03-26 | 1 | -1/+1 |
| | | | |||||
| * | | version bump | Neil Johnson | 2018-03-26 | 1 | -1/+1 |
| | | | |||||
* | | | 404 correctly on missing paths via NoResource | Matthew Hodgson | 2018-03-23 | 12 | -24/+24 |
| | | | | | | | | | | | | fixes https://github.com/matrix-org/synapse/issues/2043 and https://github.com/matrix-org/synapse/issues/2029 | ||||
* | | | Merge pull request #3006 from matrix-org/erikj/state_iter | Erik Johnston | 2018-03-22 | 1 | -12/+12 |
|\ \ \ | | | | | | | | | Use .iter* to avoid copies in StateHandler | ||||
| * | | | Fix s/iteriterms/itervalues | Erik Johnston | 2018-03-22 | 1 | -1/+1 |
| | | | | |||||
| * | | | Use .iter* to avoid copies in StateHandler | Erik Johnston | 2018-03-15 | 1 | -12/+12 |
| | | | | |||||
* | | | | Merge branch 'release-v0.27.0' of github.com:matrix-org/synapse into develop | Erik Johnston | 2018-03-22 | 1 | -1/+1 |
|\ \ \ \ | | |/ / | |/| / | |_|/ |/| | | |||||
| * | | fix merge conflicts | Neil Johnson | 2018-03-20 | 29 | -46/+57 |
| |\ \ | |||||
| * | | | Update __init__.py | Neil Johnson | 2018-03-19 | 1 | -1/+1 |
| | | | | | | | | | | | | bump version | ||||
| * | | | Bump version number v0.27.0-rc1 | Erik Johnston | 2018-03-15 | 1 | -1/+1 |
| | |/ | |/| | |||||
* | | | Explicitly use simplejson | Erik Johnston | 2018-03-20 | 1 | -7/+7 |
| | | | |||||
* | | | Fix replication after switch to simplejson | Erik Johnston | 2018-03-19 | 1 | -2/+4 |
| |/ |/| | | | | | | | Turns out that simplejson serialises namedtuple's as dictionaries rather than tuples by default. | ||||
* | | Merge pull request #3005 from matrix-org/erikj/fix_cache_size | Erik Johnston | 2018-03-19 | 2 | -5/+16 |
|\ \ | | | | | | | Fix bug where state cache used lots of memory | ||||
| * | | Add comments | Erik Johnston | 2018-03-19 | 1 | -0/+7 |
| | | | |||||
| * | | Fix bug where state cache used lots of memory | Erik Johnston | 2018-03-15 | 2 | -5/+9 |
| |/ | | | | | | | | | | | | | | | | | The state cache bases its size on the sum of the size of entries. The size of the entry is calculated once on insertion, so it is important that the size of entries does not change. The DictionaryCache modified the entries size, which caused the state cache to incorrectly think it was smaller than it actually was. | ||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into develop | Erik Johnston | 2018-03-19 | 25 | -37/+34 |
|\ \ | |||||
| * | | Remove wrong comment | Erik Johnston | 2018-03-16 | 1 | -1/+0 |
| | | | |||||
| * | | Bump version and changelog | Erik Johnston | 2018-03-15 | 1 | -1/+1 |
| | | | |||||
| * | | Replace ujson with simplejson | Erik Johnston | 2018-03-15 | 25 | -38/+37 |
| | | | |||||
* | | | spell out not to massively increase bcrypt rounds | Matthew Hodgson | 2018-03-19 | 1 | -1/+3 |
| | | | |||||
* | | | Replace some ujson with simplejson to make it work | Erik Johnston | 2018-03-16 | 4 | -4/+5 |
| |/ |/| | |||||
* | | Register membership/state servlets in event_creator | Erik Johnston | 2018-03-14 | 1 | -1/+13 |
| | | |||||
* | | Merge pull request #2992 from matrix-org/erikj/implement_member_workre | Erik Johnston | 2018-03-14 | 4 | -4/+440 |
|\ \ | | | | | | | Implement RoomMemberWorkerHandler | ||||
| * | | Fix imports | Erik Johnston | 2018-03-14 | 2 | -7/+4 |
| | | | |||||
| * | | s/join/joined/ in notify_user_membership_change | Erik Johnston | 2018-03-14 | 2 | -4/+4 |
| | | | |||||
| * | | Split RoomMemberWorkerHandler to separate file | Erik Johnston | 2018-03-14 | 3 | -81/+104 |
| | | | |||||
| * | | Implement RoomMemberWorkerHandler | Erik Johnston | 2018-03-13 | 4 | -2/+418 |
| | | | |||||
* | | | Merge pull request #2989 from matrix-org/erikj/profile_cache_master | Erik Johnston | 2018-03-14 | 1 | -1/+4 |
|\ \ \ | | | | | | | | | Only update remote profile cache on master | ||||
| * | | | Only update remote profile cache on master | Erik Johnston | 2018-03-13 | 1 | -1/+4 |
| | | | | |||||
* | | | | Merge pull request #2988 from matrix-org/erikj/split_profile_store | Erik Johnston | 2018-03-14 | 2 | -24/+47 |
|\ \ \ \ | | | | | | | | | | | Split up ProfileStore | ||||
| * | | | | Split up ProfileStore | Erik Johnston | 2018-03-13 | 2 | -24/+47 |
| |/ / / | |||||
* | | | | Merge pull request #2991 from matrix-org/erikj/fixup_rm | Erik Johnston | 2018-03-14 | 1 | -4/+4 |
|\ \ \ \ | | | | | | | | | | | _remote_join and co take a requester | ||||
| * | | | | _remote_join and co take a requester | Erik Johnston | 2018-03-13 | 1 | -4/+4 |
| | |/ / | |/| | | |||||
* | | | | Merge pull request #2993 from matrix-org/erikj/is_blocked | Erik Johnston | 2018-03-14 | 1 | -13/+17 |
|\ \ \ \ | | | | | | | | | | | Add is_blocked to worker store | ||||
| * | | | | Add is_blocked to worker store | Erik Johnston | 2018-03-13 | 1 | -13/+17 |
| |/ / / | |||||
* / / / | fix bug #2926 (loading all state for a given type from the DB if the ↵ | Matthew Hodgson | 2018-03-13 | 1 | -7/+27 |
|/ / / | | | | | | | | | | | | | state_key is None) (#2990) Fixes a regression that had crept in where the caching layer upholds requests for loading state which is filtered by type (but not by state_key), but the DB layer itself would interpret a missing state_key as a request to filter by null state_key rather than returning all state_keys. | ||||
* | | | Merge pull request #2987 from matrix-org/erikj/split_room_member_handler | Erik Johnston | 2018-03-13 | 2 | -100/+189 |
|\ \ \ | |/ / |/| | | Split RoomMemberHandler into base and master class | ||||
| * | | Raise, don't return, exception | Erik Johnston | 2018-03-13 | 1 | -1/+1 |
| | | | |||||
| * | | Add missing param to docstrings | Erik Johnston | 2018-03-13 | 1 | -0/+3 |
| | | | |||||
| * | | Correct import order | Erik Johnston | 2018-03-13 | 1 | -3/+3 |
| | | | |||||
| * | | Move user_*_room distributor stuff to master class | Erik Johnston | 2018-03-13 | 1 | -5/+50 |
| | | | | | | | | | | | | | | | I added yields when calling user_left_room, but they shouldn't matter on the master process as they always return None anyway. | ||||
| * | | Split RoomMemberHandler into base and master class | Erik Johnston | 2018-03-13 | 2 | -98/+139 |
| | | | | | | | | | | | | | | | | | | | | | | | | The intention here is to split the class into the bits that can be done on workers and the bits that have to be done on the master. In future there will also be a class that can be run on the worker, which will delegate work to the master when necessary. | ||||
* | | | Merge pull request #2978 from matrix-org/erikj/refactor_replication_layer | Erik Johnston | 2018-03-13 | 9 | -12/+12 |
|\ \ \ | | | | | | | | | Remove ReplicationLayer and user Client/Server directly | ||||
| * | | | s/replication_client/federation_client/ | Erik Johnston | 2018-03-13 | 8 | -9/+9 |
| | | | | |||||
| * | | | s/replication_server/federation_server | Erik Johnston | 2018-03-13 | 2 | -3/+3 |
| | | | | |||||
* | | | | Merge pull request #2981 from matrix-org/erikj/factor_remote_leave | Erik Johnston | 2018-03-13 | 1 | -22/+54 |
|\ \ \ \ | | |/ / | |/| | | Factor out _remote_reject_invite in RoomMember | ||||
| * | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-03-13 | 19 | -110/+146 |
| |\ \ \ | | | | | | | | | | | | | | | | erikj/factor_remote_leave | ||||
| * | | | | Add docstring | Erik Johnston | 2018-03-13 | 1 | -0/+26 |
| | | | | | |||||
| * | | | | Factor out _remote_reject_invite in RoomMember | Erik Johnston | 2018-03-13 | 1 | -22/+28 |
| | | | | | |||||
* | | | | | Merge pull request #2979 from matrix-org/erikj/no_handlers | Erik Johnston | 2018-03-13 | 19 | -91/+19 |
|\ \ \ \ \ | |_|/ / / |/| | | | | Don't build handlers on workers unnecessarily | ||||
| * | | | | Don't build handlers on workers unnecessarily | Erik Johnston | 2018-03-13 | 5 | -5/+0 |
| | |/ / | |/| | | |||||
| * | | | Remove unused ReplicationLayer | Erik Johnston | 2018-03-13 | 2 | -59/+0 |
| | | | | |||||
| * | | | Split replication layer into two | Erik Johnston | 2018-03-13 | 12 | -27/+19 |
| | | | | |||||
* | | | | Merge pull request #2980 from matrix-org/erikj/rm_priv | Erik Johnston | 2018-03-13 | 1 | -7/+7 |
|\ \ \ \ | | | | | | | | | | | Make RoomMemberHandler functions private that can be | ||||
| * | | | | Make functions private that can be | Erik Johnston | 2018-03-13 | 1 | -7/+7 |
| | |/ / | |/| | | |||||
* | | | | Merge pull request #2982 from matrix-org/erikj/fix_extra_users | Erik Johnston | 2018-03-13 | 2 | -5/+5 |
|\ \ \ \ | | | | | | | | | | | extra_users is actually a list of UserIDs | ||||
| * | | | | extra_users is actually a list of UserIDs | Erik Johnston | 2018-03-13 | 2 | -5/+5 |
| |/ / / | |||||
* | | | | Merge pull request #2983 from matrix-org/erikj/rename_register_3pid | Erik Johnston | 2018-03-13 | 2 | -11/+25 |
|\ \ \ \ | | | | | | | | | | | Refactor get_or_register_3pid_guest | ||||
| * | | | | Refactor get_or_register_3pid_guest | Erik Johnston | 2018-03-13 | 2 | -11/+25 |
| |/ / / | |||||
* | | | | Merge pull request #2984 from matrix-org/erikj/fix_rest_regeix | Erik Johnston | 2018-03-13 | 1 | -1/+1 |
|\ \ \ \ | | | | | | | | | | | RoomMembershipRestServlet doesn't handle /forget | ||||
| * | | | | RoomMembershipRestServlet doesn't handle /forget | Erik Johnston | 2018-03-13 | 1 | -1/+1 |
| |/ / / | | | | | | | | | | | | | | | | | Due to the order we register the REST handlers `/forget` was handled by the correct handler. | ||||
* | | | | Merge pull request #2975 from matrix-org/rav/measure_persist_events | Richard van der Hoff | 2018-03-13 | 1 | -4/+5 |
|\ \ \ \ | | | | | | | | | | | Add Measure block for persist_events | ||||
| * | | | | Add Measure block for persist_events | Richard van der Hoff | 2018-03-13 | 1 | -4/+5 |
| |/ / / | | | | | | | | | | | | | This seems like a useful thing to measure. | ||||
* | | | | Merge pull request #2977 from matrix-org/erikj/replication_move_props | Erik Johnston | 2018-03-13 | 4 | -22/+13 |
|\ \ \ \ | | |/ / | |/| | | Move property setting from ReplicationLayer to base classes | ||||
| * | | | Move property setting from ReplicationLayer to FederationBase | Erik Johnston | 2018-03-13 | 4 | -22/+13 |
| | | | | |||||
* | | | | Fix docstring types | Erik Johnston | 2018-03-13 | 1 | -2/+2 |
|/ / / | |||||
* / / | Split out edu/query registration to a separate class | Erik Johnston | 2018-03-13 | 10 | -60/+90 |
|/ / | |||||
* | | Add transactional API to history purge | Richard van der Hoff | 2018-03-12 | 2 | -8/+134 |
| | | | | | | | | 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. | ||||
* | | Merge pull request #2961 from matrix-org/rav/run_in_background | Richard van der Hoff | 2018-03-12 | 1 | -24/+29 |
|\ \ | | | | | | | Factor run_in_background out from preserve_fn | ||||
| * | | Factor run_in_background out from preserve_fn | Richard van der Hoff | 2018-03-08 | 1 | -24/+29 |
| | | | | | | | | | | | | | | | It annoys me that we create temporary function objects when there's really no need for it. Let's factor the gubbins out of preserve_fn and start using it. | ||||
* | | | Merge pull request #2965 from matrix-org/rav/request_logging | Richard van der Hoff | 2018-03-12 | 2 | -34/+96 |
|\ \ \ | | | | | | | | | Add a metric which increments when a request is received | ||||
| * | | | Add some docstrings to help figure this out | Richard van der Hoff | 2018-03-09 | 1 | -2/+26 |
| | | | | |||||
| * | | | Add a metric which increments when a request is received | Richard van der Hoff | 2018-03-09 | 2 | -2/+26 |
| | | | | | | | | | | | | | | | | | | | | | | | | It's useful to know when there are peaks in incoming requests - which isn't quite the same as there being peaks in outgoing responses, due to the time taken to handle requests. | ||||
| * | | | refactor JsonResource | Richard van der Hoff | 2018-03-09 | 1 | -32/+46 |
| | | | | | | | | | | | | | | | | | | | | rephrase the OPTIONS and unrecognised request handling so that they look similar to the common flow. | ||||
* | | | | Fix up log message | Erik Johnston | 2018-03-07 | 1 | -1/+1 |
| | | | | |||||
* | | | | Fix typo | Erik Johnston | 2018-03-07 | 1 | -2/+2 |
| | | | | |||||
* | | | | Fix race in sync when joining room | Erik Johnston | 2018-03-07 | 3 | -30/+102 |
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The race happens when the user joins a room at the same time as doing a sync. We fetch the current token and then get the rooms the user is in. If the join happens after the current token, but before we get the rooms we end up sending down a partial room entry in the sync. This is fixed by looking at the stream ordering of the membership returned by get_rooms_for_user, and handling the case when that stream ordering is after the current token. | ||||
* | | | Merge pull request #2949 from krombel/use_bcrypt_checkpw | Richard van der Hoff | 2018-03-06 | 2 | -3/+5 |
|\ \ \ | | | | | | | | | use bcrypt.checkpw | ||||
| * | | | use bcrypt.checkpw | Krombel | 2018-03-05 | 2 | -3/+5 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in bcrypt 3.1.0 checkpw got introduced (already 2 years ago) This makes use of that with enhancements which might get introduced by that Signed-Off-by: Matthias Kesler <krombel@krombel.de> | ||||
* | | | | Merge pull request #2946 from matrix-org/rav/timestamp_to_purge | Richard van der Hoff | 2018-03-06 | 3 | -12/+87 |
|\ \ \ \ | | | | | | | | | | | Implement purge_history by timestamp | ||||
| * | | | | Provide a means to pass a timestamp to purge_history | Richard van der Hoff | 2018-03-05 | 3 | -12/+87 |
| |/ / / | |||||
* | | | | Merge pull request #2948 from matrix-org/erikj/kill_as_sync | Erik Johnston | 2018-03-06 | 4 | -163/+14 |
|\ \ \ \ | | | | | | | | | | | Remove ability for AS users to call /events and /sync | ||||
| * | | | | Remove ability for AS users to call /events and /sync | Erik Johnston | 2018-03-05 | 4 | -163/+14 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This functionality has been deprecated for a while as well as being broken for a while. Instead of fixing it lets just remove it entirely. See: https://github.com/matrix-org/matrix-doc/issues/1144 | ||||
* | | | | | Merge pull request #2947 from matrix-org/erikj/split_directory_store | Erik Johnston | 2018-03-05 | 2 | -28/+30 |
|\ \ \ \ \ | |_|/ / / |/| | | | | Split Directory store | ||||
| * | | | | Fix cache invalidation on deletion | Erik Johnston | 2018-03-05 | 1 | -1/+4 |
| | | | | | |||||
| * | | | | Split Directory store | Erik Johnston | 2018-03-05 | 2 | -27/+26 |
| |/ / / | |||||
* | | | | Merge pull request #2943 from ↵ | Richard van der Hoff | 2018-03-05 | 1 | -12/+71 |
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | matrix-org/rav/fix_find_first_stream_ordering_after_ts Test and fix find_first_stream_ordering_after_ts | ||||
| * | | | Test and fix find_first_stream_ordering_after_ts | Richard van der Hoff | 2018-03-05 | 1 | -15/+53 |
| | | | | | | | | | | | | | | | | It seemed to suffer from a bunch of off-by-one errors. | ||||
| * | | | Add find_first_stream_ordering_after_ts | Richard van der Hoff | 2018-03-05 | 1 | -0/+21 |
| | | | | | | | | | | | | | | | | Expose this as a public function which can be called outside a txn | ||||
* | | | | Merge pull request #2934 from matrix-org/erikj/cache_fix | Erik Johnston | 2018-03-05 | 2 | -13/+15 |
|\ \ \ \ | | | | | | | | | | | Fix bug with delayed cache invalidation stream | ||||
| * | | | | Fix bug with delayed cache invalidation stream | Erik Johnston | 2018-03-02 | 2 | -13/+15 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We poked the notifier before updated the current token for the cache invalidation stream. This mean that sometimes the update wouldn't be sent until the next time a cache was invalidated. | ||||
* | | | | | Merge pull request #2929 from matrix-org/erikj/split_regististration_store | Erik Johnston | 2018-03-05 | 2 | -72/+64 |
|\ \ \ \ \ | |/ / / / |/| | | | | Split registration store | ||||
| * | | | | Split registration store | Erik Johnston | 2018-03-02 | 2 | -72/+64 |
| | | | | | |||||
* | | | | | Add missing yield during 3pid signature checks | Erik Johnston | 2018-03-02 | 1 | -1/+1 |
|/ / / / | |||||
* | | | | Merge pull request #2928 from matrix-org/erikj/read_marker_caches | Erik Johnston | 2018-03-01 | 1 | -1/+1 |
|\ \ \ \ | | |/ / | |/| | | Fix typo in getting replication account data processing | ||||
| * | | | Fix typo in getting replication account data processing | Erik Johnston | 2018-03-01 | 1 | -1/+1 |
| | | | | |||||
* | | | | Merge pull request #2925 from matrix-org/erikj/split_sig_fed | Erik Johnston | 2018-03-01 | 3 | -180/+152 |
|\ \ \ \ | |_|/ / |/| | | | Split out SignatureStore and EventFederationStore | ||||
| * | | | Remove unused DataStore | Erik Johnston | 2018-03-01 | 1 | -1/+0 |
| | | | | |||||
| * | | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_sig_fed | Erik Johnston | 2018-03-01 | 7 | -445/+428 |
| |\ \ \ | |||||
| * | | | | Stub out broken function only used for cache | Erik Johnston | 2018-03-01 | 1 | -1/+3 |
| | | | | | |||||
| * | | | | Split out SignatureStore and EventFederationStore | Erik Johnston | 2018-03-01 | 3 | -174/+148 |
| | | | | | |||||
* | | | | | Merge pull request #2927 from matrix-org/erikj/read_marker_caches | Erik Johnston | 2018-03-01 | 4 | -5/+46 |
|\ \ \ \ \ | | |_|/ / | |/| | | | Improve caching for read_marker API | ||||
| * | | | | Fewer lies are better | Erik Johnston | 2018-03-01 | 1 | -2/+2 |
| | | | | | |||||
| * | | | | Improve caching for read_marker API | Erik Johnston | 2018-03-01 | 3 | -3/+41 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We add a new storage function to get a paritcular type of room account data. This allows us to prefill the cache when updating that acount data. | ||||
| * | | | | Add some caches to help read marker API | Erik Johnston | 2018-03-01 | 3 | -2/+5 |
| |/ / / | |||||
* | | | | Merge pull request #2926 from matrix-org/erikj/member_handler_move | Erik Johnston | 2018-03-01 | 10 | -39/+51 |
|\ \ \ \ | |_|/ / |/| | | | Move RoomMemberHandler out of Handlers | ||||
| * | | | Move back to hs.is_mine | Erik Johnston | 2018-03-01 | 1 | -7/+6 |
| | | | | |||||
| * | | | Move RoomMemberHandler out of Handlers | Erik Johnston | 2018-03-01 | 10 | -44/+57 |
| |/ / | |||||
* | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-03-01 | 6 | -225/+221 |
|\ \ \ | | | | | | | | | | | | | erikj/split_stream_store | ||||
| * \ \ | Merge pull request #2923 from matrix-org/erikj/stream_ago_worker | Erik Johnston | 2018-03-01 | 3 | -80/+85 |
| |\ \ \ | | | | | | | | | | | Calculate stream_ordering_month_ago correctly on workers | ||||
| | * | | | Default stream_ordering_*_ago to None | Erik Johnston | 2018-03-01 | 1 | -2/+2 |
| | | | | | |||||
| | * | | | Fix comment typo | Erik Johnston | 2018-03-01 | 1 | -1/+1 |
| | | | | | |||||
| | * | | | Calculate stream_ordering_month_ago correctly on workers | Erik Johnston | 2018-03-01 | 3 | -80/+85 |
| | |/ / | |||||
| * | | | Merge pull request #2922 from matrix-org/erikj/split_room_store | Erik Johnston | 2018-03-01 | 2 | -135/+125 |
| |\ \ \ | | | | | | | | | | | Split up RoomStore | ||||
| | * | | | Split up RoomStore | Erik Johnston | 2018-03-01 | 2 | -135/+125 |
| | |/ / | |||||
| * | | | Merge pull request #2921 from matrix-org/rav/unyielding_make_deferred_yieldable | Richard van der Hoff | 2018-03-01 | 1 | -9/+11 |
| |\ \ \ | | |/ / | |/| | | Rewrite make_deferred_yieldable avoiding inlineCallbacks | ||||
| | * | | Rewrite make_deferred_yieldable avoiding inlineCallbacks | Richard van der Hoff | 2018-03-01 | 1 | -9/+11 |
| | | | | | | | | | | | | | | | | | | | | ... because (a) it's actually simpler (b) it might be marginally more performant? | ||||
* | | | | Remove unused variables | Erik Johnston | 2018-03-01 | 1 | -8/+1 |
| | | | | |||||
* | | | | Document abstract class and method better | Erik Johnston | 2018-03-01 | 1 | -8/+13 |
| | | | | |||||
* | | | | Split out stream store | Erik Johnston | 2018-03-01 | 3 | -210/+202 |
|/ / / | |||||
* | | | Log in the correct places | Erik Johnston | 2018-03-01 | 1 | -2/+4 |
| | | | |||||
* | | | Don't do preserve_fn for every request | Erik Johnston | 2018-03-01 | 1 | -1/+2 |
| | | | |||||
* | | | Add some logging | Erik Johnston | 2018-03-01 | 1 | -0/+2 |
| | | | |||||
* | | | Make repl send_event idempotent and retry on timeouts | Erik Johnston | 2018-03-01 | 1 | -6/+38 |
| | | | | | | | | | | | | | | | | | | If we treated timeouts as failures on the worker we would attempt to clean up e.g. push actions while the master might still process the event. | ||||
* | | | 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 | 2 | -1/+15 |
| | | | |||||
* | | | Fixup comments | Erik Johnston | 2018-03-01 | 1 | -4/+4 |
| | | | |||||
* | | | Calculate push actions on worker | Erik Johnston | 2018-02-28 | 3 | -26/+70 |
|/ / | |||||
* | | Move storage functions for push calculations | Erik Johnston | 2018-02-27 | 6 | -98/+101 |
| | | | | | | | | This will allow push actions for an event to be calculated on workers. | ||||
* | | Merge pull request #2904 from matrix-org/erikj/receipt_cache_invalidation | Erik Johnston | 2018-02-27 | 2 | -14/+16 |
|\ \ | | | | | | | Fix missing invalidations for receipt storage | ||||
| * | | Fix missing invalidations for receipt storage | Erik Johnston | 2018-02-21 | 2 | -14/+16 |
| | | | |||||
* | | | Merge pull request #2903 from matrix-org/erikj/split_roommember_store | Erik Johnston | 2018-02-27 | 2 | -207/+187 |
|\ \ \ | | | | | | | | | Split out RoomMemberStore | ||||
| * \ \ | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-02-23 | 13 | -594/+647 |
| |\ \ \ | | | | | | | | | | | | | | | | erikj/split_roommember_store | ||||
| * | | | | Update copyright | Erik Johnston | 2018-02-23 | 3 | -0/+3 |
| | | | | | |||||
| * | | | | Split out RoomMemberStore | Erik Johnston | 2018-02-21 | 2 | -206/+184 |
| | | | | | |||||
* | | | | | Merge pull request #2901 from matrix-org/erikj/split_as_stores | Erik Johnston | 2018-02-27 | 2 | -37/+29 |
|\ \ \ \ \ | | | | | | | | | | | | | Split AS stores | ||||
| * | | | | | Add comment | Erik Johnston | 2018-02-27 | 1 | -0/+4 |
| | | | | | | |||||
| * | | | | | Update copyright | Erik Johnston | 2018-02-23 | 2 | -0/+2 |
| | | | | | | |||||
| * | | | | | Split AS stores | Erik Johnston | 2018-02-21 | 2 | -37/+23 |
| |/ / / / | |||||
* | | | | | Merge pull request #2892 from matrix-org/erikj/batch_inserts_push_actions | Erik Johnston | 2018-02-26 | 2 | -23/+46 |
|\ \ \ \ \ | | | | | | | | | | | | | Batch inserts into event_push_actions_staging | ||||
| * | | | | | Update comments | Erik Johnston | 2018-02-21 | 1 | -3/+4 |
| | | | | | | |||||
| * | | | | | Batch inserts into event_push_actions_staging | Erik Johnston | 2018-02-20 | 2 | -23/+45 |
| | | | | | | |||||
* | | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-02-26 | 15 | -687/+747 |
|\ \ \ \ \ \ | | |_|/ / / | |/| | | | | | | | | | | erikj/handle_unpersisted_events_push | ||||
| * | | | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵ | Erik Johnston | 2018-02-23 | 12 | -507/+570 |
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | erikj/split_event_push_actions | ||||
| | * \ \ \ \ | Merge pull request #2902 from matrix-org/erikj/split_events_store | Erik Johnston | 2018-02-23 | 3 | -370/+405 |
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | Split out get_events and co into a worker store | ||||
| | | * | | | | | Split EventsWorkerStore into separate file | Erik Johnston | 2018-02-23 | 3 | -361/+401 |
| | | | | | | | | |||||
| | | * | | | | | Update copyright | Erik Johnston | 2018-02-23 | 2 | -0/+2 |
| | | | | | | | | |||||
| | | * | | | | | Remove redundant clock | Erik Johnston | 2018-02-23 | 1 | -3/+0 |
| | | | | | | | | |||||
| | | * | | | | | _event_persist_queue shouldn't be in worker store | Erik Johnston | 2018-02-23 | 1 | -4/+4 |
| | | | |/ / / | | | |/| | | | |||||
| | | * | | | | Split out get_events and co into a worker store | Erik Johnston | 2018-02-21 | 2 | -356/+352 |
| | | | | | | | |||||
| | * | | | | | Merge pull request #2899 from matrix-org/erikj/split_pushers | Erik Johnston | 2018-02-23 | 2 | -13/+10 |
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | Split PusherStore | ||||
| | | * | | | | | Update copyright | Erik Johnston | 2018-02-23 | 2 | -0/+2 |
| | | | | | | | | |||||
| | | * | | | | | Split PusherStore | Erik Johnston | 2018-02-21 | 2 | -13/+8 |
| | | |/ / / / | |||||
| | * | | | | | Merge pull request #2898 from matrix-org/erikj/split_push_rules_store | Erik Johnston | 2018-02-23 | 3 | -45/+64 |
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | Split PushRulesStore | ||||
| | | * | | | | | Update copyright | Erik Johnston | 2018-02-23 | 3 | -0/+3 |
| | | | | | | | | |||||
| | | * | | | | | Split PushRulesStore | Erik Johnston | 2018-02-21 | 3 | -45/+61 |
| | | |/ / / / | |||||
| | * | | | | | Merge pull request #2897 from matrix-org/erikj/split_account_data | Erik Johnston | 2018-02-23 | 4 | -69/+74 |
| | |\ \ \ \ \ | | | |_|_|/ / | | |/| | | | | Split AccountDataStore and TagStore | ||||
| | | * | | | | Update copyright | Erik Johnston | 2018-02-23 | 3 | -0/+3 |
| | | | | | | | |||||
| | | * | | | | Use absolute imports | Erik Johnston | 2018-02-23 | 3 | -5/+5 |
| | | | | | | | |||||
| | | * | | | | Split AccountDataStore and TagStore | Erik Johnston | 2018-02-21 | 4 | -67/+69 |
| | | |/ / / | |||||
| | * | | | | Merge pull request #2893 from matrix-org/erikj/delete_from_staging_fed | Erik Johnston | 2018-02-21 | 1 | -9/+17 |
| | |\ \ \ \ | | | |/ / / | | |/| | | | Delete from push_actions_staging in federation too | ||||
| | | * | | | Delete from push_actions_staging in federation too | Erik Johnston | 2018-02-20 | 1 | -9/+17 |
| | | |/ / | |||||
| * | | | | Update copyright | Erik Johnston | 2018-02-23 | 2 | -0/+2 |
| | | | | | |||||
| * | | | | Split out EventPushActionWorkerStore | Erik Johnston | 2018-02-21 | 2 | -91/+76 |
| |/ / / | |||||
| * | | | Raise exception in abstract method | Erik Johnston | 2018-02-20 | 1 | -1/+1 |
| | | | | |||||
| * | | | Fix comment | Erik Johnston | 2018-02-20 | 2 | -2/+2 |
| | | | | |||||
| * | | | Use abstract base class to access stream IDs | Erik Johnston | 2018-02-20 | 2 | -17/+34 |
| | | | | |||||
| * | | | Split ReceiptsStore | Erik Johnston | 2018-02-20 | 3 | -76/+69 |
| | | | | |||||
* | | | | Actually use new param | Erik Johnston | 2018-02-21 | 1 | -1/+3 |
| | | | | |||||
* | | | | Ensure all push actions are deleted from staging | Erik Johnston | 2018-02-20 | 2 | -2/+19 |
| | | | | |||||
* | | | | Refactor _set_push_actions_for_event_and_users_txn to use events_and_contexts | Erik Johnston | 2018-02-20 | 2 | -33/+41 |
|/ / / | |||||
* | | | Merge pull request #2868 from matrix-org/erikj/refactor_media_storage | Erik Johnston | 2018-02-20 | 1 | -26/+11 |
|\ \ \ | |/ / |/| | | Make store_file use store_into_file | ||||
| * | | Make store_file use store_into_file | Erik Johnston | 2018-02-14 | 1 | -26/+11 |
| | | | |||||
* | | | Update pynacl dependency to 1.2.1 or higher | Pascal Bach | 2018-02-19 | 1 | -1/+1 |
| | | | | | | | | | | | | Signed-off-by: Pascal Bach <pascal.bach@nextrem.ch> | ||||
* | | | (Really) fix tablescan of event_push_actions on purge | Richard van der Hoff | 2018-02-16 | 1 | -1/+0 |
| | | | | | | | | | | | | | | | commit 278d21b5 added new code to avoid the tablescan, but didn't remove the old :/ | ||||
* | | | Fix typo of double is_highlight | Erik Johnston | 2018-02-16 | 1 | -1/+1 |
| | | | |||||
* | | | Comments | Erik Johnston | 2018-02-16 | 3 | -1/+9 |
| | | | |||||
* | | | Ensure that we delete staging push actions on errors | Erik Johnston | 2018-02-15 | 2 | -3/+25 |
| | | | |||||
* | | | Remove context.push_actions | Erik Johnston | 2018-02-15 | 4 | -19/+7 |
| | | | |||||
* | | | Update event_push_actions table from staging table | Erik Johnston | 2018-02-15 | 2 | -22/+39 |
| | | | |||||
* | | | Store push actions in staging area | Erik Johnston | 2018-02-15 | 3 | -0/+54 |
| | | | |||||
* | | | Don't serialize current state over replication | Erik Johnston | 2018-02-15 | 3 | -8/+51 |
| | | | |||||
* | | | Merge pull request #2872 from matrix-org/erikj/event_worker_dont_log | Erik Johnston | 2018-02-15 | 1 | -1/+10 |
|\ \ \ | | | | | | | | | Don't log errors propogated from send_event | ||||
| * | | | Don't log errors propogated from send_event | Erik Johnston | 2018-02-15 | 1 | -1/+10 |
| | | | | |||||
* | | | | Fix state group storage bug in workers | Erik Johnston | 2018-02-15 | 1 | -41/+41 |
|/ / / | | | | | | | | | | | | | We needed to move `_count_state_group_hops_txn` to the StateGroupWorkerStore. | ||||
* | | | Merge pull request #2867 from matrix-org/rav/rework_purge | Richard van der Hoff | 2018-02-15 | 1 | -35/+83 |
|\ \ \ | | | | | | | | | purge_history cleanups | ||||
| * | | | purge_history: fix sqlite syntax error | Richard van der Hoff | 2018-02-14 | 1 | -1/+4 |
| | | | | | | | | | | | | | | | | apparently sqlite insists on indexes being named | ||||
| * | | | purge_history: handle sqlite asshattery | Richard van der Hoff | 2018-02-14 | 1 | -19/+27 |
| | | | | | | | | | | | | | | | | | | | | apparently creating a temporary table commits the transaction. because that's a useful thing. | ||||
| * | | | purge_history: fix index use | Richard van der Hoff | 2018-02-14 | 1 | -0/+14 |
| | | | | | | | | | | | | | | | | | | | | event_push_actions doesn't have an index on event_id, so we need to specify room_id. | ||||
| * | | | Rework event purge to use a temporary table | Richard van der Hoff | 2018-02-14 | 1 | -35/+58 |
| | | | | | | | | | | | | | | | | | | | | ... which should speed things up by reducing the amount of data being shuffled across the connection | ||||
* | | | | Merge pull request #2769 from matrix-org/matthew/hit_the_gin | Richard van der Hoff | 2018-02-14 | 5 | -20/+110 |
|\ \ \ \ | |_|/ / |/| | | | switch back from GIST to GIN indexes | ||||
| * | | | remove overzealous exception handling | Richard van der Hoff | 2018-02-14 | 1 | -18/+10 |
| | | | | |||||
| * | | | Merge branch 'matthew/gin_work_mem' into matthew/hit_the_gin | Richard van der Hoff | 2018-02-13 | 90 | -1492/+3304 |
| |\ \ \ | |||||
| | * \ \ | Merge branch 'develop' into matthew/gin_work_mem | Richard van der Hoff | 2018-02-13 | 29 | -549/+995 |
| | |\ \ \ | |||||
| | * | | | | Factor out common code for search insert | Richard van der Hoff | 2018-02-04 | 1 | -33/+56 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | we can reuse the same code as is used for event insert, for doing the background index population. | ||||
| | * | | | | Clean up work_mem handling | Richard van der Hoff | 2018-02-03 | 1 | -11/+41 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add some comments and improve exception handling when twiddling work_mem for the search update | ||||
| | * | | | | Move store_event_search_txn to SearchStore | Richard van der Hoff | 2018-02-03 | 2 | -37/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... as a precursor to making event storing and doing the bg update share some code. | ||||
| | * | | | | Merge branch 'develop' into matthew/gin_work_mem | Richard van der Hoff | 2018-02-03 | 72 | -902/+2203 |
| | |\ \ \ \ | |||||
| | * | | | | | oops | hera | 2018-01-09 | 2 | -2/+2 |
| | | | | | | | |||||
| | * | | | | | oops, tweak work_mem when actually storing | Matthew Hodgson | 2018-01-09 | 1 | -0/+2 |
| | | | | | | | |||||
| | * | | | | | avoid 80s GIN inserts by tweaking work_mem | Matthew Hodgson | 2018-01-09 | 1 | -0/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | see https://github.com/matrix-org/synapse/issues/2753 for details | ||||
| * | | | | | | move search reindex to schema 47 | Richard van der Hoff | 2018-02-13 | 2 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're up to schema v47 on develop now, so this will have to go in there to have an effect. This might cause an error if somebody has already run it in the v46 guise, and runs it again in the v47 guise, because it will cause a duplicate entry in the bbackground_updates table. On the other hand, the entry is removed once it is complete, and it is unlikely that anyone other than matrix.org has run it on v46. The update itself is harmless to re-run because it deliberately copes with the index already existing. | ||||
| * | | | | | | GIN reindex: Fix syntax errors, improve exception handling | Richard van der Hoff | 2018-02-13 | 1 | -13/+27 |
| | | | | | | | |||||
| * | | | | | | Reinstate event_search_postgres_gist handler | Richard van der Hoff | 2018-02-02 | 3 | -6/+31 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | People may have queued updates for this, so we can't just delete it. | ||||
| * | | | | | | fix GIST->GIN switch | Matthew Hodgson | 2018-01-09 | 3 | -14/+37 |
| | | | | | | | |||||
| * | | | | | | switch back from GIST to GIN indexes | Matthew Hodgson | 2018-01-09 | 1 | -8/+13 |
| |/ / / / / | |||||
* | | | | | | Merge pull request #2854 from matrix-org/erikj/event_create_worker | Erik Johnston | 2018-02-13 | 11 | -20/+500 |
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | | 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 event_creator worker | Erik Johnston | 2018-02-07 | 3 | -1/+190 |
| | | | | | | |||||
| * | | | | | Add replication http endpoint for event sending | Erik Johnston | 2018-02-07 | 8 | -13/+304 |
| | | | | | | |||||
* | | | | | | Fix log message in purge_history | Richard van der Hoff | 2018-02-13 | 1 | -2/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | (we don't just remove remote events) | ||||
* | | | | | | Merge pull request #2864 from matrix-org/rav/persist_event_caching | Richard van der Hoff | 2018-02-13 | 2 | -60/+70 |
|\ \ \ \ \ \ | | | | | | | | | | | | | | | Use StateResolutionHandler to resolve state in persist_events | ||||
| * | | | | | | style nit | Richard van der Hoff | 2018-02-13 | 1 | -1/+1 |
| | | | | | | | |||||
| * | | | | | | Use StateResolutionHandler to resolve state in persist events | Richard van der Hoff | 2018-02-05 | 1 | -48/+24 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and thus benefit (hopefully) from its cache. | ||||
| * | | | | | | Flatten _get_new_state_after_events | Richard van der Hoff | 2018-02-05 | 1 | -44/+46 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | rejig the if statements to simplify the logic and reduce indentation | ||||
| * | | | | | | Check that events being persisted have state_group | Richard van der Hoff | 2018-02-05 | 1 | -4/+9 |
| | | | | | | | |||||
| * | | | | | | Add event_map param to resolve_state_groups | Richard van der Hoff | 2018-02-05 | 2 | -4/+31 |
| | | | | | | | |||||
* | | | | | | | Fix typos in purge api & doc | Richard van der Hoff | 2018-02-13 | 1 | -3/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * It's supposed to be purge_local_events, not ..._history * Fix the doc to have valid json | ||||
* | | | | | | | Merge pull request #2695 from okurz/feature/allow_recent_pysaml | Richard van der Hoff | 2018-02-13 | 1 | -1/+1 |
|\ \ \ \ \ \ \ | |_|_|_|_|/ / |/| | | | | | | Allow use of higher versions of saml2 | ||||
| * | | | | | | Allow use of higher versions of saml2 | Oliver Kurz | 2017-11-20 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The package was pinned to <4.0 with 07cf96eb because "from saml2 import config" did not work. This seems to have been fixed in the mean time in the saml2 package and therefore should not stop to use a more recent version. Signed-off-by: Oliver Kurz <okurz@suse.de> | ||||
* | | | | | | | Merge pull request #2857 from matrix-org/erikj/upload_store | Erik Johnston | 2018-02-12 | 1 | -0/+6 |
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | Tell storage providers about new file so they can upload | ||||
| * | | | | | | | Tell storage providers about new file so they can upload | Erik Johnston | 2018-02-07 | 1 | -0/+6 |
| | | | | | | | | |||||
* | | | | | | | | Merge pull request #2858 from matrix-org/rav/purge_updates | Richard van der Hoff | 2018-02-09 | 4 | -39/+88 |
|\ \ \ \ \ \ \ \ | |_|_|_|/ / / / |/| | | | | | | | delete_local_events for purge_room_history | ||||
| * | | | | | | | purge: move room_depth update to end | Richard van der Hoff | 2018-02-09 | 1 | -6/+12 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... to avoid locking the table for too long | ||||
| * | | | | | | | delete_local_events for purge_history | Richard van der Hoff | 2018-02-09 | 4 | -13/+55 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a flag which makes the purger delete local events | ||||
| * | | | | | | | purge: Move cache invalidation to more appropriate place | Richard van der Hoff | 2018-02-09 | 1 | -4/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it was a bit of a non-sequitur there | ||||
| * | | | | | | | bump purge logging to info | Richard van der Hoff | 2018-02-09 | 1 | -13/+14 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this thing takes ages and the only sign of any progress is the logs, so having some logs is useful. | ||||
| * | | | | | | | rename delete_old_state -> purge_history | Richard van der Hoff | 2018-02-09 | 2 | -8/+8 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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. | ||||
* | | | | | | | Merge pull request #2847 from matrix-org/erikj/separate_event_creation | Erik Johnston | 2018-02-06 | 8 | -188/+211 |
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | Split event creation into a separate handler | ||||
| * | | | | | | | Update copyright | Erik Johnston | 2018-02-06 | 6 | -1/+6 |
| | | | | | | | | |||||
| * | | | | | | | s/_create_new_client_event/create_new_client_event/ | Erik Johnston | 2018-02-06 | 2 | -8/+8 |
| | | | | | | | | |||||
| * | | | | | | | Update places where we create events | Erik Johnston | 2018-02-05 | 7 | -38/+42 |
| | | | | | | | |