summary refs log tree commit diff
path: root/synapse/federation/send_queue.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Update worker docs with recent enhancements (#7969)Erik Johnston2020-07-291-1/+1
|
* Add ability to shard the federation sender (#7798)Erik Johnston2020-07-101-1/+13
|
* Fix some spelling mistakes / typos. (#7811)Patrick Cloke2020-07-091-1/+1
|
* Replace iteritems/itervalues/iterkeys with native versions. (#7692)Patrick Cloke2020-06-151-5/+3
|
* Fix typing annotations in synapse/federation (#7382)Richard van der Hoff2020-05-051-15/+31
| | | | We're pretty close to having mypy working for `synapse.federation`, so let's finish the job.
* Fix catchup-on-reconnect for the Federation Stream (#7374)Richard van der Hoff2020-05-051-16/+24
| | | | looks like we managed to break this during the refactorathon.
* Convert `*StreamRow` classes to inner classes (#7116)Richard van der Hoff2020-03-231-1/+1
| | | | | This just helps keep the rows closer to their streams, so that it's easier to see what the format of each stream is.
* Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957)Patrick Cloke2020-02-211-2/+2
| | | | Ensure good comprehension hygiene using flake8-comprehensions.
* Remove unused DeviceRow class (#6800)Erik Johnston2020-01-291-20/+1
|
* Fix race in federation sender that delayed device updates. (#6799)Erik Johnston2020-01-291-29/+3
| | | | | | | | | | | | We were sending device updates down both the federation stream and device streams. This mean there was a race if the federation sender worker processed the federation stream first, as when the sender checked if there were new device updates the slaved ID generator hadn't been updated with the new stream IDs and so returned nothing. This situation is correctly handled by events/receipts/etc by not sending updates down the federation stream and instead having the federation sender worker listen on the other streams and poke the transaction queues as appropriate.
* Port synapse.replication.tcp to async/await (#6666)Erik Johnston2020-01-161-1/+3
| | | | | | | | | | * Port synapse.replication.tcp to async/await * Newsfile * Correctly document type of on_<FOO> functions as async * Don't be overenthusiastic with the asyncing....
* Port receipt and read markers to async/waitErik Johnston2019-10-291-1/+3
|
* Run Black. (#5482)Amber Brown2019-06-201-73/+72
|
* Use event streams to calculate presenceErik Johnston2019-03-271-2/+71
| | | | | | | | | | | | | | | | | Primarily this fixes a bug in the handling of remote users joining a room where the server sent out the presence for all local users in the room to all servers in the room. We also change to using the state delta stream, rather than the distributor, as it will make it easier to split processing out of the master process (as well as being more flexible). Finally, when sending presence states to newly joined servers we filter out old presence states to reduce the number sent. Initially we filter out states that are offline and have a last active more than a week ago, though this can be changed down the line. Fixes #3962
* Rename and move the classesRichard van der Hoff2019-03-131-7/+7
|
* Move client receipt processing to federation sender worker.Richard van der Hoff2019-03-131-0/+9
| | | | | This is mostly a prerequisite for #4730, but also fits with the general theme of "move everything off the master that we possibly can".
* Avoid rebuilding Edu objects in worker mode (#4770)Richard van der Hoff2019-03-041-7/+7
| | | | | In worker mode, on the federation sender, when we receive an edu for sending over the replication socket, it is parsed into an Edu object. There is no point extracting the contents of it so that we can then immediately build another Edu.
* fix #3445Krombel2018-08-291-2/+2
| | | | | itervalues(d) calls d.itervalues() [PY2] and d.values() [PY3] but SortedDict only implements d.values()
* Remove pdu_failures from transactionsTravis Ralston2018-07-301-62/+1
| | | The field is never read from, and all the opportunities given to populate it are not utilized. It should be very safe to remove this.
* run isortAmber Brown2018-07-091-7/+7
|
* 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-311-1/+1
| | | | they're not meant to be lazy (#3307)
* cleanupAmber Brown2018-05-221-3/+2
|
* replacing portionsAmber Brown2018-05-211-6/+2
|
* Use six.itervalues in some placesAdrian Tschira2018-04-151-6/+8
| | | | | | There's more where that came from Signed-off-by: Adrian Tschira <nota@notafile.com>
* 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.
* 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 #2115 from matrix-org/erikj/dedupe_federation_replErik Johnston2017-04-121-35/+34
|\ | | | | Reduce federation replication traffic
| * CommentErik Johnston2017-04-111-1/+7
| |
| * CommentsErik Johnston2017-04-111-7/+7
| |
| * Reduce federation presence replication trafficErik Johnston2017-04-101-27/+20
| | | | | | | | | | | | | | | | 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.
* | 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
|
* Make federation send queue take the current positionErik Johnston2017-03-301-15/+25
|
* Notify on new federation trafficErik Johnston2017-03-271-0/+7
|
* 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-211-0/+26
|
* Remove explicit calls to send_pduErik Johnston2016-11-211-4/+0
|
* Handle sending events and device messages over federationErik Johnston2016-11-171-7/+31
|
* 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