summary refs log tree commit diff
path: root/synapse/federation (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Run things as background processesRichard van der Hoff2018-07-181-9/+6
| | | | | | | | This fixes #3518, and ensures that we get useful logs and metrics for lots of things that happen in the background. (There are certainly more things that happen in the background; these are just the common ones I've found running a single-process synapse locally).
* Resource tracking for background processesRichard van der Hoff2018-07-181-5/+7
| | | | | | | | | | | | | | | | This introduces a mechanism for tracking resource usage by background processes, along with an example of how it will be used. This will help address #3518, but more importantly will give us better insights into things which are happening but not being shown up by the request metrics. We *could* do this with Measure blocks, but: - I think having them pulled out as a completely separate metric class will make it easier to distinguish top-level processes from those which are nested. - I want to be able to report on in-flight background processes, and I don't think we want to do this for *all* Measure blocks.
* rename assert_params_in_request to assert_params_in_dictKrombel2018-07-131-2/+2
| | | | | | the method "assert_params_in_request" does handle dicts and not requests. A request body has to be parsed to json before this method can be used
* run isortAmber Brown2018-07-099-64/+57
|
* Implementation of server_aclsRichard van der Hoff2018-07-042-4/+154
| | | | | ... as described at https://docs.google.com/document/d/1EttUVzjc2DWe2ciw4XPtNpUpIl9lWXGEsy2ewDS7rtw.
* More server_name validationRichard van der Hoff2018-07-041-2/+3
| | | | | | | | We need to do a bit more validation when we get a server name, but don't want to be re-doing it all over the shop, so factor out a separate parse_and_validate_server_name, and do the extra validation. Also, use it to verify the server name in the config file.
* Reject invalid server names (#3480)Richard van der Hoff2018-07-031-22/+44
| | | | | Make sure that server_names used in auth headers are sane, and reject them with a sensible error code, before they disappear off into the depths of the system.
* Merge pull request #3456 from matrix-org/hawkowl/federation-prevevent-checkingErik Johnston2018-06-291-1/+3
|\ | | | | Check the state of prev_events a bit more thoroughly when coming over federation
| * handle federation not telling us about prev_eventsAmber Brown2018-06-271-1/+3
| |
* | Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-281-1/+1
|/
* Merge pull request #3428 from matrix-org/erikj/persisted_pduErik Johnston2018-06-221-12/+1
|\ | | | | Simplify get_persisted_pdu
| * simplify get_persisted_pduRichard van der Hoff2018-06-121-12/+1
| | | | | | | | | | it doesn't make much sense to use get_persisted_pdu on the receive path: just get the event straight from the store.
* | Populate synapse_federation_client_sent_pdu_destinations:count again (#3386)Amber Brown2018-06-211-3/+7
| |
* | Remove run_on_reactor (#3395)Amber Brown2018-06-141-4/+0
|/
* federation/send_queue.py: fix usage of sortedcontainers.SortedDictIvan Shapovalov2018-06-061-27/+22
|
* Port to sortedcontainers (with tests!) (#3332)Amber Brown2018-06-061-7/+7
|
* federation/send_queue.py: fix usage of LaterGaugeIvan Shapovalov2018-06-031-1/+1
| | | | | Fixes a startup crash due to commit df9f72d9e5fe264b86005208e0f096156eb03e4b "replacing portions".
* Consistently use six's iteritems and wrap lazy keys/values in list() if ↵Amber Brown2018-05-313-5/+7
| | | | they're not meant to be lazy (#3307)
* fixesAmber Brown2018-05-231-4/+4
|
* cleanupAmber Brown2018-05-221-3/+2
|
* cleanup pep8 errorsAmber Brown2018-05-222-6/+21
|
* fixesAmber Brown2018-05-221-3/+3
|
* replacing portionsAmber Brown2018-05-214-53/+35
|
* Merge pull request #3209 from damir-manapov/masterRichard van der Hoff2018-05-111-2/+0
|\ | | | | transaction_id, destination defined twice
| * transaction_id, destination twiceDamir Manapov2018-05-101-2/+0
| |
* | Merge branch 'release-v0.28.1' into developRichard van der Hoff2018-05-011-3/+18
|\|
| * Apply some limits to depth to counter abuseRichard van der Hoff2018-05-011-3/+18
| | | | | | | | | | | | | | * When creating a new event, cap its depth to 2^63 - 1 * When receiving events, reject any without a sensible depth As per https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI
* | Merge branch 'develop' into py3-xrange-1Richard van der Hoff2018-04-301-2/+3
|\ \
| * \ Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-272-3/+12
| |\ \
| * | | Use run_in_background in preference to preserve_fnRichard van der Hoff2018-04-271-2/+3
| | |/ | |/| | | | | | | | | | | | | While I was going through uses of preserve_fn for other PRs, I converted places which only use the wrapped function once to use run_in_background, to avoid creating the function object.
* | | Move more xrange to sixAdrian Tschira2018-04-281-1/+3
| |/ |/| | | | | | | | | plus a bonus next() Signed-off-by: Adrian Tschira <nota@notafile.com>
* | Improve exception handling for background processesRichard van der Hoff2018-04-272-3/+12
|/ | | | | | | | | | | | | | | | | | There were a bunch of places where we fire off a process to happen in the background, but don't have any exception handling on it - instead relying on the unhandled error being logged when the relevent deferred gets garbage-collected. This is unsatisfactory for a number of reasons: - logging on garbage collection is best-effort and may happen some time after the error, if at all - it can be hard to figure out where the error actually happened. - it is logged as a scary CRITICAL error which (a) I always forget to grep for and (b) it's not really CRITICAL if a background process we don't care about fails. So this is an attempt to add exception handling to everything we fire off into the background.
* Merge pull request #3118 from matrix-org/rav/reject_prev_eventsRichard van der Hoff2018-04-231-2/+23
|\ | | | | Reject events which have lots of prev_events
| * Add some commentsRichard van der Hoff2018-04-181-2/+23
| |
* | Merge pull request #3106 from NotAFile/py3-six-itervalues-1Richard van der Hoff2018-04-202-9/+13
|\ \ | | | | | | Use six.itervalues in some places
| * | Use six.itervalues in some placesAdrian Tschira2018-04-152-9/+13
| |/ | | | | | | | | | | There's more where that came from Signed-off-by: Adrian Tschira <nota@notafile.com>
* | Merge pull request #3093 from matrix-org/rav/response_cache_wrapRichard van der Hoff2018-04-201-11/+11
|\ \ | | | | | | Refactor ResponseCache usage
| * | Reinstate linearizer for federation_server.on_context_state_requestRichard van der Hoff2018-04-201-5/+11
| | |
| * | Refactor ResponseCache usageRichard van der Hoff2018-04-121-11/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a `.wrap` method to ResponseCache which wraps up the boilerplate of a (get, set) pair, and then use it throughout the codebase. This will be largely non-functional, but does include the following functional changes: * federation_server.on_context_state_request: drops use of _server_linearizer which looked redundant and could cause incorrect cache misses by yielding between the get and the set. * RoomListHandler.get_remote_public_room_list(): fixes logcontext leaks * the wrap function includes some logging. I'm hoping this won't be too noisy on production.
* | | Refactor store.have_eventsRichard van der Hoff2018-04-201-1/+1
| |/ |/| | | | | | | | | It turns out that most of the time we were calling have_events, we were only using half of the result. Replace have_events with have_seen_events and get_rejection_reasons, so that we can see what's going on a bit more clearly.
* | fix federation_domain_whitelistMatthew Hodgson2018-04-131-6/+6
| | | | | | | | we were checking the wrong server_name on inbound requests
* | revert last to PR properlyMatthew Hodgson2018-04-131-6/+6
| |
* | correctly auth inbound federation_domain_whitelist reqsMatthew Hodgson2018-04-131-6/+6
| |
* | Revert "Use sortedcontainers instead of blist"Richard van der Hoff2018-04-131-7/+7
|/ | | | | | | | | | | This reverts commit 9fbe70a7dc3afabfdac176ba1f4be32dd44602aa. It turns out that sortedcontainers.SortedDict is not an exact match for blist.sorteddict; in particular, `popitem()` removes things from the opposite end of the dict. This is trivial to fix, but I want to add some unit tests, and potentially some more thought about it, before we do so.
* Merge pull request #3092 from matrix-org/rav/response_cache_metricsRichard van der Hoff2018-04-121-1/+1
|\ | | | | Add metrics for ResponseCache
| * Add metrics for ResponseCacheRichard van der Hoff2018-04-101-1/+1
| |
* | Set all metrics at the same timeErik Johnston2018-04-121-6/+6
| |
* | Track last processed event received_tsErik Johnston2018-04-111-0/+11
| |
* | Track where event stream processing have gotten up toErik Johnston2018-04-111-0/+4
| |
* | Merge pull request #2760 from Valodim/pypyRichard van der Hoff2018-04-111-7/+7
|\ \ | | | | | | Synapse on PyPy
| * | Use sortedcontainers instead of blistVincent Breitmoser2018-04-101-7/+7
| |/ | | | | | | | | | | | | | | This commit drop-in replaces blist with SortedContainers. They are written in pure python so work with pypy, but perform as good as native implementations, at least in a couple benchmarks: http://www.grantjenks.com/docs/sortedcontainers/performance.html
* | Merge pull request #3078 from matrix-org/erikj/federation_senderErik Johnston2018-04-101-15/+41
|\ \ | | | | | | Send federation events concurrently
| * | Use run_in_background insteadErik Johnston2018-04-101-1/+1
| | |
| * | Preserve log contexts correctlyErik Johnston2018-04-101-1/+4
| | |
| * | Log event ID on exceptionErik Johnston2018-04-101-1/+4
| | |
| * | Handle all events in a room correctlyErik Johnston2018-04-091-1/+2
| | |
| * | Send federation events concurrentlyErik Johnston2018-04-091-4/+18
| | |
| * | Handle exceptions in get_hosts_for_room when sending events over federationErik Johnston2018-04-091-11/+16
| |/
* | Ensure slashes are escapedErik Johnston2018-04-101-1/+1
| |
* | URL quote path segments over federationErik Johnston2018-04-101-48/+80
|/
* pep8Luke Barnard2018-04-061-1/+1
|
* Fix federation client `set_group_joinable` typoLuke Barnard2018-04-061-1/+1
|
* Implement group join APIDavid Baker2018-04-062-0/+31
|
* use PUT instead of POST for federating groups/m.join_policyKrombel2018-04-062-2/+2
|
* Use "/settings/" (plural)Luke Barnard2018-04-052-2/+2
|
* Use join_policy API instead of joinableLuke Barnard2018-04-032-6/+6
| | | | | | | | | | | | | | | | | The API is now under /groups/$group_id/setting/m.join_policy and expects a JSON blob of the shape ```json { "m.join_policy": { "type": "invite" } } ``` where "invite" could alternatively be "open".
* pep8David Baker2018-03-281-2/+1
|
* Add joinability for groupsDavid Baker2018-03-282-0/+37
| | | | | Adds API to set the 'joinable' flag, and corresponding flag in the table.
* Merge pull request #2978 from matrix-org/erikj/refactor_replication_layerErik Johnston2018-03-131-1/+1
|\ | | | | Remove ReplicationLayer and user Client/Server directly
| * s/replication_server/federation_serverErik Johnston2018-03-131-1/+1
| |
* | Merge pull request #2979 from matrix-org/erikj/no_handlersErik Johnston2018-03-134-69/+2
|\| | | | | Don't build handlers on workers unnecessarily
| * Remove unused ReplicationLayerErik Johnston2018-03-132-59/+0
| |
| * Split replication layer into twoErik Johnston2018-03-132-10/+2
| |
* | Merge pull request #2977 from matrix-org/erikj/replication_move_propsErik Johnston2018-03-134-22/+13
|\| | | | | Move property setting from ReplicationLayer to base classes
| * Move property setting from ReplicationLayer to FederationBaseErik Johnston2018-03-134-22/+13
| |
* | Fix docstring typesErik Johnston2018-03-131-2/+2
|/
* Split out edu/query registration to a separate classErik Johnston2018-03-131-48/+69
|
* Add federation_domain_whitelist option (#2820)Matthew Hodgson2018-01-224-3/+18
| | | | | | Add federation_domain_whitelist gives a way to restrict which domains your HS is allowed to federate with. useful mainly for gracefully preventing a private but internet-connected HS from trying to federate to the wider public Matrix network
* Metrics for events processed in appservice and fed senderRichard van der Hoff2018-01-151-0/+4
| | | | More metrics I wished I'd had
* Check missing fields in event_from_pdu_jsonRichard van der Hoff2017-12-301-0/+7
| | | | Return a 400 rather than a 500 when somebody messes up their send_join
* Factor out `event_from_pdu_json`Richard van der Hoff2017-12-303-37/+44
| | | | | turns out we have two copies of this, and neither needs to be an instance method
* federation_server: clean up importsRichard van der Hoff2017-12-301-14/+11
|
* federation_client: clean up importsRichard van der Hoff2017-12-301-13/+10
|
* Clear logcontext before starting fed txn queue runnerRichard van der Hoff2017-11-281-2/+8
| | | | | These processes take a long time compared to the request, so there is lots of "Entering|Restoring dead context" in the logs. Let's try to shut it up a bit.
* Remove preserve_context_over_{fn, deferred}Richard van der Hoff2017-11-141-2/+2
| | | | | Both of these functions ae known to leak logcontexts. Replace the remaining calls to them and kill them off.
* Add bracketsErik Johnston2017-11-091-2/+4
|
* Have an explicit API to update room configErik Johnston2017-11-082-1/+36
|
* Revert "Modify group room association API to allow modification of is_public"Erik Johnston2017-11-082-7/+6
|
* Update docs for updating room group associationLuke Barnard2017-11-011-1/+1
|
* Flake8Luke Barnard2017-10-311-3/+4
|
* Modify group room association API to allow modification of is_publicLuke Barnard2017-10-312-4/+4
| | | | also includes renamings to make things more consistent.
* Do logcontexts outside ResponseCacheErik Johnston2017-10-251-3/+5
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2017-10-241-3/+3
|\ | | | | | | erikj/group_fed_update_profile
| * replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-3/+3
| | | | | | | | what could possibly go wrong
* | Correctly wire in update group profile over federationErik Johnston2017-10-232-11/+31
|/
* Fix typoErik Johnston2017-10-191-1/+1
|
* Fix typo in group attestation handlingErik Johnston2017-10-191-1/+1
|
* Fix 500 error when we get an error handling a PDURichard van der Hoff2017-10-171-1/+0
| | | | | | | | | | FederationServer doesn't have a send_failure (and nor does its subclass, ReplicationLayer), so this was failing. I'm not really sure what the idea behind send_failure is, given (a) we don't do anything at the other end with it except log it, and (b) we also send back the failure via the transaction response. I suspect there's a whole lot of dead code around it, but for now I'm just removing the broken bit.
* DelintLuke Barnard2017-10-161-0/+2
|
* Implement GET /groups/$groupId/invited_usersLuke Barnard2017-10-162-1/+30
|
* Merge pull request #2529 from matrix-org/rav/fix_transaction_failure_handlingRichard van der Hoff2017-10-111-2/+3
|\ | | | | log pdu_failures from incoming transactions
| * log pdu_failures from incoming transactionsRichard van der Hoff2017-10-111-2/+3
| | | | | | | | | | | | | | ... even if we have no EDUs. This appears to have been introduced in 476899295f5fd6cff64799bcbc84cd4bf9005e33.
* | Fix typo in invite to groupErik Johnston2017-10-111-1/+1
| |
* | Merge pull request #2466 from matrix-org/erikj/groups_mergedErik Johnston2017-10-112-1/+892
|\ \ | | | | | | Initial Group Implementation
| * \ Merge branch 'develop' into erikj/groups_mergedDavid Baker2017-10-022-69/+78
| |\ \
| * | | Add remove room APIErik Johnston2017-09-262-1/+25
| | | |
| * | | Add bulk group publicised lookup APIErik Johnston2017-08-092-0/+32
| | | |
| * | | Add update group profile APIErik Johnston2017-07-201-0/+12
| | | |
| * | | CommentsErik Johnston2017-07-181-1/+1
| | | |
| * | | CommentsErik Johnston2017-07-181-0/+40
| | | |
| * | | Fix typosErik Johnston2017-07-181-2/+2
| | | |
| * | | Correctly parse query paramsErik Johnston2017-07-181-19/+19
| | | |
| * | | Add client apisErik Johnston2017-07-181-9/+187
| | | |
| * | | CommentsErik Johnston2017-07-181-15/+19
| | | |
| * | | Add local group server supportErik Johnston2017-07-172-0/+121
| | | |
| * | | Ensure category and role ids are non-nullErik Johnston2017-07-141-0/+24
| | | |
| * | | CommentsErik Johnston2017-07-131-0/+8
| | | |
| * | | Add summary APIs to federationErik Johnston2017-07-131-11/+223
| | | |
| * | | Add group summary APIsErik Johnston2017-07-121-0/+17
| | | |
| * | | Add federation API for adding room to groupErik Johnston2017-07-111-0/+18
| | | |
| * | | CommentErik Johnston2017-07-112-0/+26
| | | |
| * | | Initial group server implementationErik Johnston2017-07-102-1/+176
| | | |
* | | | fed server: process PDUs for different rooms in parallelRichard van der Hoff2017-10-091-19/+34
| | | | | | | | | | | | | | | | | | | | With luck, this will give a real-time improvement when there are many rooms and the server ends up calling out to fetch missing events.
* | | | Fed server: use a linearizer for ongoing transactionsRichard van der Hoff2017-10-091-1/+29
| |_|/ |/| | | | | | | | | | | We don't want to process the same transaction multiple times concurrently, so use a linearizer.
* | | fed server: refactor on_incoming_transactionRichard van der Hoff2017-10-091-24/+29
| | | | | | | | | | | | | | | Move as much as possible to after the have_responded check, and reduce the number of times we iterate over the pdu list.
* | | Fed server: Move origin-check code to _handle_received_pduRichard van der Hoff2017-10-091-24/+24
| | | | | | | | | | | | | | | | | | | | | The response-building code expects there to be an entry in the `results` list for each entry in the pdu_list, so the early `continue` was messing this up. That doesn't really matter, because all that the federation client does is log any errors, but it's pretty poor form.
* | | Fix up logcontext handling in (federation) TransactionQueueRichard van der Hoff2017-10-061-16/+32
| |/ |/| | | | | | | Avoid using preserve_context_over_function, which has problems with respect to logcontexts.
* | Make the spam checker a moduleDavid Baker2017-09-261-3/+2
| |
* | Fix logcontexts in _check_sigs_and_hashesRichard van der Hoff2017-09-202-60/+62
| |
* | Remove redundant `preserve_fn`Richard van der Hoff2017-09-201-2/+2
| | | | | | | | | | | | preserve_fn is a no-op unless the wrapped function returns a Deferred. verify_json_objects_for_server returns a list, so this is doing nothing.
* | PoC for filtering spammy events (#2456)Richard van der Hoff2017-09-191-16/+24
|/ | | Demonstration of how you might add some hooks to filter out spammy events.
* Separate federation servlet into different listsErik Johnston2017-07-051-8/+16
|
* Remove spurious log linesErik Johnston2017-06-071-1/+0
|
* Faster cache for get_joined_hostsErik Johnston2017-05-251-0/+2
|
* Make presence use cached users/hosts in roomErik Johnston2017-05-161-1/+1
|
* Do some logging when one-time-keys get claimedRichard van der Hoff2017-05-091-0/+10
| | | | | might help us figure out if https://github.com/vector-im/riot-web/issues/3868 has happened.
* Merge pull request #2190 from matrix-org/erikj/mark_remote_as_back_moreErik Johnston2017-05-051-0/+9
|\ | | | | Always mark remotes as up if we receive a signed request from them
| * Use preserve_fn and add logsErik Johnston2017-05-051-1/+3
| |
| * Always mark remotes as up if we receive a signed request from themErik Johnston2017-05-051-0/+7
| |
* | Add cache for get_current_hosts_in_roomErik Johnston2017-05-021-5/+1
|/
* Try harder when sending leave eventsRichard van der Hoff2017-04-211-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.
* Fix some lies, and other clarifications, in docstringsRichard van der Hoff2017-04-212-2/+68
| | | | | The documentation on get_json has been wrong ever since the very first commit to synapse...
* Merge pull request #2115 from matrix-org/erikj/dedupe_federation_replErik Johnston2017-04-122-45/+110
|\ | | | | Reduce federation replication traffic
| * CommentErik Johnston2017-04-121-2/+1
| |
| * Reuse get_interested_partiesErik Johnston2017-04-121-3/+3
| |
| * CommentErik Johnston2017-04-112-1/+9
| |
| * CommentsErik Johnston2017-04-111-7/+7
| |
| * Move get_interested_remotes back to presence handlerErik Johnston2017-04-111-35/+6
| |
| * CommentsErik Johnston2017-04-111-1/+14
| |
| * Reduce federation presence replication trafficErik Johnston2017-04-102-36/+110
| | | | | | | | | | | | | | | | 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-metricPaul Evans2017-04-121-0/+3
|\ \ | | | | | | Add a counter metric for successfully-sent transactions
| * | Add a counter metric for successfully-sent transactionsPaul "LeoNerd" Evans2017-04-111-0/+3
| |/
* | Add some commentsErik Johnston2017-04-121-0/+15
| |
* | Use generatorsErik Johnston2017-04-101-2/+2
| |
* | Dedupe KeyedEdu and Devices federation repl trafficErik Johnston2017-04-101-6/+9
|/
* Rename variableErik Johnston2017-04-101-7/+7
|
* Revert to sending the same data type as beforeErik Johnston2017-04-101-2/+2
|
* Change nameErik Johnston2017-04-101-2/+2
|
* CommentsErik Johnston2017-04-101-4/+6
|
* CommentErik Johnston2017-04-071-2/+15
|
* Add loggingErik Johnston2017-04-071-0/+8
|
* Fix up federation SendQueue and document typesErik Johnston2017-04-071-26/+220
|
* Don't double json encode federation replication dataErik Johnston2017-04-051-10/+9
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2017-04-041-2/+6
|\ | | | | | | erikj/repl_tcp_server
| * Accept join events from all serversRichard van der Hoff2017-04-031-2/+6
| | | | | | | | | | | | | | 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).
* | Make federation send queue take the current positionErik Johnston2017-03-301-15/+25
|/
* Bail early if remote wouldn't be retried (#2064)Erik Johnston2017-03-291-2/+8
| | | | | | | | | | * Bail early if remote wouldn't be retried * Don't always return true * Just use get_retry_limiter * Spelling
* Merge pull request #2067 from matrix-org/erikj/notify_on_fedErik Johnston2017-03-291-0/+7
|\ | | | | Notify on new federation traffic
| * Notify on new federation trafficErik Johnston2017-03-271-0/+7
| |
* | Batch sending of device list pokesErik Johnston2017-03-241-0/+1
|/
* Ignore backoff history for invites, aliases, and roomdirsRichard van der Hoff2017-03-232-3/+10
| | | | | Add a param to the federation client which lets us ignore historical backoff data for federation queries, and set it for a handful of operations.
* push federation retry limiter down to matrixfederationclientRichard van der Hoff2017-03-233-141/+109
| | | | | rather than having to instrument everywhere we make a federation call, make the MatrixFederationHttpClient manage the retry limiter.
* Fix assertion to stop transaction queue getting wedgedRichard van der Hoff2017-03-151-0/+5
| | | | | | | | ... and update some docstrings to correctly reflect the types being used. get_new_device_msgs_for_remote can return a long under some circumstances, which was being stored in last_device_list_stream_id_by_dest, and was then upsetting things on the next loop.
* Move FederationServer._handle_new_pdu to FederationHandlerRichard van der Hoff2017-03-091-193/+1
| | | | | | | | | | | Unfortunately this significantly increases the size of the already-rather-big FederationHandler, but the code fits more naturally here, and it paves the way for the tighter integration that I need between handling incoming PDUs and doing the join dance. Other than renaming the existing `FederationHandler.on_receive_pdu` to `_process_received_pdu` to make way for it, this just consists of the move, and replacing `self.handler` with `self` and `self` with `self.replication_layer`.
* Move sig check out of _handle_new_pduRichard van der Hoff2017-03-091-12/+36
| | | | | When we receive PDUs via `get_missing_events`, we have already checked their sigs, so there is no need to do it again.
* Factor _get_missing_events_for_pdu out of _handle_new_pduRichard van der Hoff2017-03-091-62/+82
| | | | | This should be functionally identical: it just seeks to improve readability by reducing indentation.
* Fix docstringRichard van der Hoff2017-03-091-2/+1
|
* Fix a race in transaction queueRichard van der Hoff2017-02-201-9/+21
| | | | | | It was theoretically possible for a PDU to get queued and not sent for ages. On closer inspection I think there were bigger problems elsewhere, but we might as well fix this since it's easy.
* Correctly raise exceptions for ratelimitng. Ratelimit on 401Erik Johnston2017-02-011-1/+1
|
* Better handle 404 response for federation /send/Erik Johnston2017-01-311-0/+1
|
* Implement device key caching over federationErik Johnston2017-01-264-0/+47
|
* Fix up sending of m.device_list_update edusErik Johnston2017-01-251-60/+61
|
* Add basic implementation of local device list changesErik Johnston2017-01-251-3/+21
|
* Merge pull request #1824 from matrix-org/erikj/retry_host_logErik Johnston2017-01-181-1/+1
|\ | | | | Lower the not retrying host log line to debug
| * Lower the not retrying host log line to debugErik Johnston2017-01-171-1/+1
| |
* | Fix couple of federation state bugsErik Johnston2017-01-171-2/+4
|/
* Name linearizer's for better logsErik Johnston2017-01-091-2/+2
|
* do the discard check in the right place to avoid grabbing dependent eventsMatthew2017-01-071-20/+20
|
* Discard PDUs from invalid origins due to #1753 in 0.18.[56] v0.18.7-rc1Matthew2017-01-071-1/+23
|
* fix commentMatthew Hodgson2017-01-051-1/+17
|
* limit total timeout for get_missing_events to 10sMatthew Hodgson2017-01-053-3/+11
|
* Only send events that originate on this server.Mark Haines2017-01-051-0/+12
| | | | | | Or events that are sent via the federation "send_join" API. This should match the behaviour from before v0.18.5 and #1635 landed.
* Get the destinations from the state from before the eventMark Haines2017-01-041-8/+9
| | | | Rather than the state after then event.
* Send ALL membership events to the server that was affected.Mark Haines2017-01-041-3/+5
| | | | | | Send all membership changes to the server that was affected. This ensures that if the last member of a room on a server was kicked or banned they get told about it.
* s/aquire/acquire/gMark Haines2016-12-301-2/+2
|
* Add more useful logging when we block fetching eventsMark Haines2016-12-301-0/+9
|
* Remove fallback from get_missing_events.Mark Haines2016-12-301-69/+0
| | | | | | | get_missing_events used to fallback to fetching the missing events individually requesting from every server in the room, one by one.e This could be unacceptably slow, possibly causing #1732
* Add new API appservice specific public room listErik Johnston2016-12-063-5/+30
|
* Correctly handle 500's and 429 on federationErik Johnston2016-11-241-0/+7
|
* Shuffle receipt handler around so that worker apps don't need to load itErik Johnston2016-11-231-1/+0
|
* Explicit federation ackErik Johnston2016-11-231-2/+11
|
* CommentsErik Johnston2016-11-211-0/+2
|
* Add some metricsErik Johnston2016-11-211-48/+68
|
* CommentsErik Johnston2016-11-212-0/+29
|
* Remove explicit calls to send_pduErik Johnston2016-11-212-8/+9
|
* Fix testsErik Johnston2016-11-211-0/+3
|
* Store federation stream positions in the databaseErik Johnston2016-11-211-4/+17
|
* Handle sending events and device messages over federationErik Johnston2016-11-172-7/+63
|
* Hook up the send queue and create a federation sender workerErik Johnston2016-11-161-21/+68
|
* Add initial cut of federation send queueErik Johnston2016-11-161-0/+174
|
* Use new federation_sender DIErik Johnston2016-11-162-49/+10
|
* Add transaction queue and transport layer to DIErik Johnston2016-11-164-10/+6
|
* Move logic into transaction_queueErik Johnston2016-11-163-19/+18
|
* Rename transaction queue functions to send_*Erik Johnston2016-11-162-12/+12
|
* Time out typing over federationErik Johnston2016-09-231-2/+0
|
* Support filtering remote room listsErik Johnston2016-09-162-3/+9
|
* Pass since/from parameters over federationErik Johnston2016-09-153-21/+20
|
* Merge pull request #1110 from matrix-org/markjh/e2e_timeoutMark Haines2016-09-132-6/+12
|\ | | | | Add a timeout parameter for end2end key queries.
| * Add a timeout parameter for end2end key queries.Mark Haines2016-09-122-6/+12
| | | | | | | | | | | | | | | | | | | | Add a timeout parameter for controlling how long synapse will wait for responses from remote servers. For servers that fail include how they failed to make it easier to debug. Fetch keys from different servers in parallel rather than in series. Set the default timeout to 10s.
* | Fix backfill when cannot find an event.Erik Johnston2016-09-121-1/+1
|/ | | | `get_pdu` can succeed but return None.
* Fix incorrect attribute nameErik Johnston2016-09-091-1/+1
|
* CommentErik Johnston2016-09-091-0/+1
|
* Add edu.type as part of key. Remove debug loggingErik Johnston2016-09-091-2/+3
|
* Clobber EDUs in send queueErik Johnston2016-09-092-5/+51
|
* Drop replication log levelsErik Johnston2016-09-091-1/+0
|
* Check if destination is ready for retry earlierErik Johnston2016-09-091-15/+16
|
* Fix tightloop on sending transactionErik Johnston2016-09-091-122/+134
|
* Correctly guard against multiple concurrent transactionsErik Johnston2016-09-091-38/+41
|
* Update last_device_stream_id_by_dest if there is nothing to sendErik Johnston2016-09-091-0/+1
|
* Add a new method to enqueue the device messages rather than sending a dummy EDUMark Haines2016-09-072-0/+17
|
* Move the check for federated device_messages.Mark Haines2016-09-071-11/+15
| | | | | Move the check into _attempt_new_transaction. Only delete messages if there were messages to delete.
* Add stream change caches for device messagesMark Haines2016-09-071-1/+4
|
* Send device messages over federationMark Haines2016-09-062-8/+37
|
* Only pull out IDs from DB for /state_ids/ requestErik Johnston2016-09-021-6/+4
|
* Merge branch 'erikj/pdu_check' of github.com:matrix-org/synapse into developErik Johnston2016-09-011-5/+5
|\
| * Ensure we only return a validated pdu in get_pduErik Johnston2016-09-011-5/+5
| |
* | Use state handler instead of get_users_in_room/get_joined_hostsErik Johnston2016-08-261-1/+4
|/
* Preserve some logcontextsErik Johnston2016-08-242-9/+15
|
* PEP8Erik Johnston2016-08-101-1/+3
|
* Clean up TransactionQueueErik Johnston2016-08-101-215/+160
|
* Merge pull request #999 from matrix-org/erikj/measure_moreErik Johnston2016-08-101-5/+7
|\ | | | | Measure federation send transaction resources
| * Measure federation send transaction resourcesErik Johnston2016-08-101-5/+7
| |
* | Don't stop on 4xx series errorsErik Johnston2016-08-101-11/+1
| |
* | Also pull out rejected eventsErik Johnston2016-08-101-1/+1
| |
* | Store if we fail to fetch an event from a destinationErik Johnston2016-08-101-1/+36
|/
* Merge pull request #991 from matrix-org/erikj/retry_makeErik Johnston2016-08-051-11/+24
|\ | | | | Retry joining via other servers if first one failed. Fix some other bugs.
| * Fix a couple of python bugsErik Johnston2016-08-051-6/+8
| |
| * Retry joining via other servers if first one failedErik Johnston2016-08-051-5/+16
| |
* | Add federation /version APIErik Johnston2016-08-051-1/+17
| |
* | Change the way we specify if we require auth or notErik Johnston2016-08-051-40/+55
|/