summary refs log tree commit diff
path: root/synapse/replication (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Remove access-token support from RegistrationHandler.register (#5641)Richard van der Hoff2019-07-081-6/+0
| | | | | | | | Nothing uses this now, so we can remove the dead code, and clean up the API. Since we're changing the shape of the return value anyway, we take the opportunity to give the method a better name.
* Remove support for invite_3pid_guest. (#5625)Richard van der Hoff2019-07-051-65/+0
| | | | | | | | | This has never been documented, and I'm not sure it's ever been used outside sytest. It's quite a lot of poorly-maintained code, so I'd like to get rid of it. For now I haven't removed the database table; I suggest we leave that for a future clearout.
* Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-041-1/+1
|
* Run Black. (#5482)Amber Brown2019-06-2026-355/+357
|
* Handle failing to talk to master over replicationErik Johnston2019-06-071-1/+9
|
* Fixup bsaed on review commentsErik Johnston2019-05-171-1/+1
|
* Add basic editing supportErik Johnston2019-05-161-0/+1
|
* Fix relations in worker modeErik Johnston2019-05-163-8/+17
|
* Replace SlavedKeyStore with a shimRichard van der Hoff2019-04-081-14/+4
| | | | | since we're pulling everything out of KeyStore anyway, we may as well simplify it.
* Remove unused server_tls_certificates functions (#5028)Richard van der Hoff2019-04-081-3/+0
| | | | These have been unused since #4120, and with the demise of perspectives, it is unlikely that they will ever be used again.
* Remove presence lists (#4989)Neil Johnson2019-04-031-10/+0
| | | Remove presence list support as per MSC 1819
* Fix sync bug when accepting invites (#4956)Richard van der Hoff2019-04-021-9/+22
| | | | | | | | | | Hopefully this time we really will fix #4422. We need to make sure that the cache on `get_rooms_for_user_with_stream_ordering` is invalidated *before* the SyncHandler is notified for the new events, and we can now do so reliably via the `events` stream.
* Combine the CurrentStateDeltaStream into the EventStreamRichard van der Hoff2019-03-273-23/+33
|
* Make EventStream rows have a typeRichard van der Hoff2019-03-273-16/+94
| | | | ... as a precursor to combining it with the CurrentStateDelta stream.
* Skip building a ROW_TYPE when building updatesRichard van der Hoff2019-03-271-2/+2
| | | | | We're about to turn it straight into a JSON object anyway so building a ROW_TYPE is a bit pointless, and reduces flexibility in the update_function.
* Add parse_row method to replication stream classRichard van der Hoff2019-03-273-3/+19
| | | | This will allow individual stream classes to override how a row is parsed.
* move FederationStream out to its own fileRichard van der Hoff2019-03-274-23/+43
|
* move EventsStream out to its own fileRichard van der Hoff2019-03-273-23/+42
|
* Move replication.tcp.streams into a packageRichard van der Hoff2019-03-272-33/+51
|
* Fix/improve some docstrings in the replication code. (#4949)Richard van der Hoff2019-03-272-7/+19
|
* Fix ClientReplicationStreamProtocol.__str__ (#4929)Richard van der Hoff2019-03-252-4/+5
| | | | | | | | `__str__` depended on `self.addr`, which was absent from ClientReplicationStreamProtocol, so attempting to call str on such an object would raise an exception. We can calculate the peer addr from the transport, so there is no need for addr anyway.
* Fix bug where read-receipts lost their timestamps (#4927)Richard van der Hoff2019-03-252-11/+27
| | | | | Make sure that they are sent correctly over the replication stream. Fixes: #4898
* Add a config option for torture-testing worker replication. (#4902)Richard van der Hoff2019-03-201-1/+17
| | | Setting this to 50 or so makes a bunch of sytests fail in worker mode.
* Prefill client IPs cache on workersErik Johnston2019-03-061-0/+2
|
* Merge pull request #4792 from matrix-org/anoa/replication_tokensAndrew Morgan2019-03-061-3/+28
|\ | | | | Support batch updates in the worker sender
| * Simplify token replication logicAndrew Morgan2019-03-051-23/+14
| |
| * Clean up logic and add commentsAndrew Morgan2019-03-041-11/+18
| |
| * Clearer branching, fix missing list clearAndrew Morgan2019-03-041-4/+11
| |
| * Prevent replication wedgingAndrew Morgan2019-03-041-4/+24
| |
* | Add rate-limiting on registration (#4735)Brendan Abolivier2019-03-051-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Rate-limiting for registration * Add unit test for registration rate limiting * Add config parameters for rate limiting on auth endpoints * Doc * Fix doc of rate limiting function Co-Authored-By: babolivier <contact@brendanabolivier.com> * Incorporate review * Fix config parsing * Fix linting errors * Set default config for auth rate limiting * Fix tests * Add changelog * Advance reactor instead of mocked clock * Move parameters to registration specific config and give them more sensible default values * Remove unused config options * Don't mock the rate limiter un MAU tests * Rename _register_with_store into register_with_store * Make CI happy * Remove unused import * Update sample config * Fix ratelimiting test for py2 * Add non-guest test
* | Fixup slave storesErik Johnston2019-03-043-36/+26
|/
* When presence is enabled don't send over replicationErik Johnston2019-02-271-2/+5
|
* Merge pull request #4749 from matrix-org/erikj/replication_connection_backoffErik Johnston2019-02-273-5/+39
|\ | | | | Fix tightloop over connecting to replication server
| * Move connecting logic into ClientReplicationStreamProtocolErik Johnston2019-02-272-18/+17
| |
| * Increase the max delay between retry attemptsErik Johnston2019-02-261-1/+1
| | | | | | | | | | Otherwise if you have many workers they can easily take out master with their connection attempts
| * Fix tightloop over connecting to replication serverErik Johnston2019-02-262-4/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the client failed to process incoming commands during the initial set up of the replication connection it would immediately disconnect and reconnect, resulting in a tightloop. This can happen, for example, when subscribing to a stream that has a row that is too long in the backlog. The fix here is to not consider the connection successfully set up until the client has succesfully subscribed and caught up with the streams. This ensures that the retry logic timers aren't reset until then, meaning that if an error does happen during start up the client will continue backing off before retrying again.
* | Limit cache invalidation replication line length (#4748)Erik Johnston2019-02-271-1/+16
|/
* Fix state cache invalidation on workersErik Johnston2019-02-221-6/+1
|
* Fix registration on workers (#4682)Erik Johnston2019-02-203-3/+58
| | | | | | | | | | * Move RegistrationHandler init to HomeServer * Move post registration actions to RegistrationHandler * Add post regisration replication endpoint * Newsfile
* Batch cache invalidation over replicationErik Johnston2019-02-181-7/+12
| | | | | | | | | | Currently whenever the current state changes in a room invalidate a lot of caches, which cause *a lot* of traffic over replication. Instead, lets batch up all those invalidations and send a single poke down the replication streams. Hopefully this will reduce load on the master process by substantially reducing traffic.
* Move register_device into handlerErik Johnston2019-02-181-14/+3
|
* Split out registration to workerErik Johnston2019-02-183-1/+179
| | | | | | | | This allows registration to be handled by a worker, though the actual write to the database still happens on master. Note: due to the in-memory session map all registration requests must be handled by the same worker.
* Fix replication for room v3 (#4523)Erik Johnston2019-01-301-1/+4
| | | | | | | | | * Fix replication for room v3 We were not correctly quoting the path fragments over http replication, which meant that it exploded when the event IDs had a slash in them * Newsfile
* Fix receiving events from federation via a workerErik Johnston2019-01-291-1/+1
| | | | This bug was introduced in PR #4470, commit 678a92cb56d547dcadffa723e29b4855a27d0901
* Replace missed usages of FrozenEventErik Johnston2019-01-252-4/+12
|
* Revert "Require event format version to parse or create events"Erik Johnston2019-01-252-12/+4
|
* Replace missed usages of FrozenEventErik Johnston2019-01-242-4/+12
|
* Don't truncate command name in metricsErik Johnston2018-10-291-2/+2
|
* Make the replication logger quieter (#4108)Amber Brown2018-10-291-1/+1
|
* Make workers work on Py3 (#4027)Amber Brown2018-10-136-30/+30
|
* Fix minor typo in exceptionTravis Ralston2018-09-131-1/+1
|
* merge (#3576)Amber Brown2018-09-141-7/+16
|
* Remove conn_idErik Johnston2018-09-041-2/+2
|
* Remove conn_id from repl prometheus metricsErik Johnston2018-09-031-10/+10
| | | | | `conn_id` gets set to a random string, and so we end up filling up prometheus with tonnes of data series, which is bad.
* Merge pull request #3713 from matrix-org/erikj/fixup_fed_loggingErik Johnston2018-08-201-1/+1
|\ | | | | Fix logging bug in EDU handling over replication
| * Fix logging bug in EDU handling over replicationErik Johnston2018-08-171-1/+1
| |
* | Logcontexts for replication command handlersRichard van der Hoff2018-08-173-15/+43
|/ | | | | | | | | | Run the handlers for replication commands as background processes. This should improve the visibility in our metrics, and reduce the number of "running db transaction from sentinel context" warnings. Ideally it means converting the things that fire off deferreds into the night into things that actually return a Deferred when they are done. I've made a bit of a stab at this, but it will probably be leaky.
* Use federation handler function rather than duplicateErik Johnston2018-08-151-41/+3
| | | | This involves renaming _persist_events to be a public function.
* Rename slave TransactionStore to SlaveTransactionStoreErik Johnston2018-08-151-1/+1
|
* Move clean_room_for_join to masterErik Johnston2018-08-091-0/+35
|
* Fixup doc commentsErik Johnston2018-08-091-0/+17
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-08-094-17/+63
|\ | | | | | | erikj/split_federation
| * Merge pull request #3632 from matrix-org/erikj/refactor_repl_servletErik Johnston2018-08-093-243/+374
| |\ | | | | | | Add helper base class for generating new replication endpoints
| | * Fixup wording and remove dead codeErik Johnston2018-08-091-2/+1
| | |
| | * Rename POST param to METHODErik Johnston2018-08-082-13/+22
| | |
| | * Fixup logging and docstringsErik Johnston2018-08-082-2/+40
| | |
| * | Basic support for room versioningRichard van der Hoff2018-08-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This is the first tranche of support for room versioning. It includes: * setting the default room version in the config file * new room_version param on the createRoom API * storing the version of newly-created rooms in the m.room.create event * fishing the version of existing rooms out of the m.room.create event
* | | Import all functions from TransactionStoreErik Johnston2018-08-061-11/+2
| | |
* | | Add EDU/query handling over replicationErik Johnston2018-08-061-1/+1
| | |
* | | Add replication APIs for persisting federation eventsErik Johnston2018-08-062-1/+247
| |/ |/|
* | Fix isortErik Johnston2018-08-061-4/+1
| |
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-08-031-4/+3
|\| | | | | | | erikj/refactor_repl_servlet
| * Kill off MatrixCodeMessageExceptionRichard van der Hoff2018-08-012-16/+12
| | | | | | | | | | | | | | | | | | | | | | This code brings the SimpleHttpClient into line with the MatrixFederationHttpClient by having it raise HttpResponseExceptions when a request fails (rather than trying to parse for matrix errors and maybe raising MatrixCodeMessageException). Then, whenever we were checking for MatrixCodeMessageException and turning them into SynapseErrors, we now need to check for HttpResponseExceptions and call to_synapse_error.
* | Use new helper base class for membership requestsErik Johnston2018-07-311-171/+91
| |
* | Use new helper base class for ReplicationSendEventRestServletErik Johnston2018-07-311-79/+36
| |
* | Add helper base class for generating new replication endpointsErik Johnston2018-07-311-0/+208
|/ | | | | This will hopefully reduce the boiler plate required to implement new internal HTTP requests.
* Fix unit testsRichard van der Hoff2018-07-251-1/+1
| | | | | | on_notifier_poke no longer runs synchonously, so we have to do a different hack to make sure that the replication data has been sent. Let's actually listen for its arrival.
* Wrap a number of things that run in the backgroundRichard van der Hoff2018-07-251-6/+8
| | | | | This will reduce the number of "Starting db connection from sentinel context" warnings, and will help with our metrics.
* Fix missing attributes on workers.Erik Johnston2018-07-231-2/+5
| | | | | This was missed during the transition from attribute to getter for getting state from context.
* Use stream cache in get_linearized_receipts_for_roomErik Johnston2018-07-101-1/+1
| | | | | This avoids us from uncessarily hitting the database when there has been no change for the room
* run isortAmber Brown2018-07-0924-66/+91
|
* Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-281-6/+10
|
* Merge pull request #3441 from matrix-org/erikj/redo_erasureErik Johnston2018-06-251-0/+2
|\ | | | | Fix user erasure and re-enable
| * Add UserErasureWorkerStore to workersErik Johnston2018-06-251-0/+2
| |
* | Remove all global reactor imports & pass it around explicitly (#3424)Amber Brown2018-06-252-5/+5
|/
* Pass around the reactor explicitly (#3385)Amber Brown2018-06-221-3/+3
|
* Fix tcp protocol metrics naming (#3410)Amber Brown2018-06-211-18/+35
|
* Fix replication metricsRichard van der Hoff2018-06-041-2/+2
| | | | fix bug introduced in #3256
* Merge remote-tracking branch 'origin/develop' into 3218-official-promAmber Brown2018-05-282-8/+9
|\
| * Merge pull request #3244 from NotAFile/py3-six-4Amber Brown2018-05-242-5/+7
| |\ | | | | | | replace some iteritems with six
| | * replace some iteritems with sixAdrian Tschira2018-05-192-5/+7
| | | | | | | | | | | | Signed-off-by: Adrian Tschira <nota@notafile.com>
* | | more cleanupAmber Brown2018-05-222-6/+10
| | |
* | | fix the test failuresAmber Brown2018-05-221-1/+1
| | |
* | | cleanups, self-registrationAmber Brown2018-05-221-4/+5
| | |
* | | Merge remote-tracking branch 'origin/develop' into 3218-official-promAmber Brown2018-05-221-0/+2
|\| |
| * | Send users a server notice about consentRichard van der Hoff2018-05-221-0/+2
| |/ | | | | | | | | When a user first syncs, we will send them a server notice asking them to consent to the privacy policy if they have not already done so.
* | rest of the changesAmber Brown2018-05-211-16/+14
| |
* | replacing portionsAmber Brown2018-05-211-54/+34
|/
* make imports localAdrian Tschira2018-04-282-4/+4
| | | | Signed-off-by: Adrian Tschira <nota@notafile.com>
* Refactor ResponseCache usageRichard van der Hoff2018-04-121-12/+6
| | | | | | | | | | | | | | | 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.
* Add metrics for ResponseCacheRichard van der Hoff2018-04-101-1/+1
|
* Fix json encoding bug in replicationRichard van der Hoff2018-04-031-1/+1
| | | | json encoders have an encode method, not a dumps method.
* Use static JSONEncodersRichard van der Hoff2018-03-291-3/+5
| | | | | using json.dumps with custom options requires us to create a new JSONEncoder on each call. It's more efficient to create one upfront and reuse it.
* Explicitly use simplejsonErik Johnston2018-03-201-7/+7
|
* Fix replication after switch to simplejsonErik Johnston2018-03-191-2/+4
| | | | | Turns out that simplejson serialises namedtuple's as dictionaries rather than tuples by default.
* Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2018-03-191-1/+1
|\
| * Replace ujson with simplejsonErik Johnston2018-03-151-1/+1
| |
* | Merge pull request #2992 from matrix-org/erikj/implement_member_workreErik Johnston2018-03-142-3/+336
|\ \ | | | | | | Implement RoomMemberWorkerHandler
| * | Fix importsErik Johnston2018-03-142-7/+4
| | |
| * | s/join/joined/ in notify_user_membership_changeErik Johnston2018-03-141-3/+3
| | |
| * | Implement RoomMemberWorkerHandlerErik Johnston2018-03-132-0/+336
| | |
* | | Split up ProfileStoreErik Johnston2018-03-131-0/+21
|/ /
* | extra_users is actually a list of UserIDsErik Johnston2018-03-131-4/+4
| |
* | Split Directory storeErik Johnston2018-03-051-5/+3
| |
* | Split registration storeErik Johnston2018-03-021-15/+3
| |
* | Merge pull request #2928 from matrix-org/erikj/read_marker_cachesErik Johnston2018-03-011-1/+1
|\ \ | | | | | | Fix typo in getting replication account data processing
| * | Fix typo in getting replication account data processingErik Johnston2018-03-011-1/+1
| | |
* | | Merge pull request #2925 from matrix-org/erikj/split_sig_fedErik Johnston2018-03-011-47/+9
|\ \ \ | | | | | | | | Split out SignatureStore and EventFederationStore
| * | | Remove unused DataStoreErik Johnston2018-03-011-1/+0
| | | |
| * | | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_sig_fedErik Johnston2018-03-012-65/+11
| |\ \ \
| * | | | Split out SignatureStore and EventFederationStoreErik Johnston2018-03-011-42/+8
| | | | |
* | | | | Merge pull request #2927 from matrix-org/erikj/read_marker_cachesErik Johnston2018-03-011-0/+4
|\ \ \ \ \ | |_|/ / / |/| | / / | | |/ / | |/| | Improve caching for read_marker API
| * | | Improve caching for read_marker APIErik Johnston2018-03-011-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | 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 APIErik Johnston2018-03-011-0/+1
| |/ /
* | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-03-012-19/+4
|\ \ \ | | | | | | | | | | | | erikj/split_stream_store
| * \ \ Merge pull request #2923 from matrix-org/erikj/stream_ago_workerErik Johnston2018-03-011-1/+0
| |\ \ \ | | | | | | | | | | Calculate stream_ordering_month_ago correctly on workers
| | * | | Calculate stream_ordering_month_ago correctly on workersErik Johnston2018-03-011-1/+0
| | |/ /
| * / / Split up RoomStoreErik Johnston2018-03-011-17/+4
| |/ /
* / / Split out stream storeErik Johnston2018-03-011-45/+9
|/ /
* | Log in the correct placesErik Johnston2018-03-011-2/+4
| |
* | Don't do preserve_fn for every requestErik Johnston2018-03-011-1/+2
| |
* | Add some loggingErik Johnston2018-03-011-0/+2
| |
* | Make repl send_event idempotent and retry on timeoutsErik Johnston2018-03-011-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.
* | Correctly send ratelimit and extra_users paramsErik Johnston2018-03-011-1/+13
| |
* | Calculate push actions on workerErik Johnston2018-02-281-1/+1
| |
* | Merge pull request #2904 from matrix-org/erikj/receipt_cache_invalidationErik Johnston2018-02-271-0/+2
|\ \ | | | | | | Fix missing invalidations for receipt storage
| * | Fix missing invalidations for receipt storageErik Johnston2018-02-211-0/+2
| | |
* | | Merge pull request #2903 from matrix-org/erikj/split_roommember_storeErik Johnston2018-02-271-28/+5
|\ \ \ | | | | | | | | Split out RoomMemberStore
| * \ \ Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-02-234-84/+23
| |\ \ \ | | | | | | | | | | | | | | | erikj/split_roommember_store
| * | | | Update copyrightErik Johnston2018-02-231-0/+1
| | | | |
| * | | | Split out RoomMemberStoreErik Johnston2018-02-211-27/+3
| | | | |
* | | | | Merge pull request #2901 from matrix-org/erikj/split_as_storesErik Johnston2018-02-271-28/+7
|\ \ \ \ \ | |_|/ / / |/| | | | Split AS stores
| * | | | Update copyrightErik Johnston2018-02-231-0/+1
| | | | |
| * | | | Split AS storesErik Johnston2018-02-211-28/+6
| |/ / /
* | | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-02-234-74/+21
|\ \ \ \ | | | | | | | | | | | | | | | erikj/split_event_push_actions
| * \ \ \ Merge pull request #2902 from matrix-org/erikj/split_events_storeErik Johnston2018-02-231-11/+3
| |\ \ \ \ | | | | | | | | | | | | Split out get_events and co into a worker store
| | * | | | Split EventsWorkerStore into separate fileErik Johnston2018-02-231-1/+1
| | | | | |
| | * | | | Update copyrightErik Johnston2018-02-231-0/+1
| | |/ / /
| | * / / Split out get_events and co into a worker storeErik Johnston2018-02-211-11/+2
| | |/ /
| * | | Merge pull request #2899 from matrix-org/erikj/split_pushersErik Johnston2018-02-231-9/+3
| |\ \ \ | | | | | | | | | | Split PusherStore
| | * | | Update copyrightErik Johnston2018-02-231-0/+1
| | | | |
| | * | | Split PusherStoreErik Johnston2018-02-211-9/+2
| | |/ /
| * | | Merge pull request #2898 from matrix-org/erikj/split_push_rules_storeErik Johnston2018-02-231-17/+7
| |\ \ \ | | | | | | | | | | Split PushRulesStore
| | * | | Update copyrightErik Johnston2018-02-231-0/+1
| | | | |
| | * | | Split PushRulesStoreErik Johnston2018-02-211-17/+6
| | |/ /
| * | | Update copyrightErik Johnston2018-02-231-0/+1
| | | |
| * | | Use absolute importsErik Johnston2018-02-231-2/+2
| | | |
| * | | Split AccountDataStore and TagStoreErik Johnston2018-02-211-34/+4
| |/ /
* / / Split out EventPushActionWorkerStoreErik Johnston2018-02-211-20/+3
|/ /
* | Fix commentErik Johnston2018-02-201-1/+1
| |
* | Use abstract base class to access stream IDsErik Johnston2018-02-201-2/+7
| |
* | Split ReceiptsStoreErik Johnston2018-02-201-28/+5
| |
* | Don't serialize current state over replicationErik Johnston2018-02-151-2/+2
| |
* | Don't log errors propogated from send_eventErik Johnston2018-02-151-1/+10
| |
* | Add event_creator workerErik Johnston2018-02-071-0/+20
| |
* | Add replication http endpoint for event sendingErik Johnston2018-02-072-0/+139
| |
* | Store state groups separately from events (#2784)Erik Johnston2018-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Split state group persist into seperate storage func * Add per database engine code for state group id gen * Move store_state_group to StateReadStore This allows other workers to use it, and so resolve state. * Hook up store_state_group * Fix tests * Rename _store_mult_state_groups_txn * Rename StateGroupReadStore * Remove redundant _have_persisted_state_group_txn * Update comments * Comment compute_event_context * Set start val for state_group_id_seq ... otherwise we try to recreate old state groups * Update comments * Don't store state for outliers * Update comment * Update docstring as state groups are ints
* | Metrics for number of RDATA commands receivedRichard van der Hoff2018-01-151-5/+14
|/ | | | I found myself wishing we had this.
* Fix some logcontext leaks in replication resourceRichard van der Hoff2017-11-231-2/+4
| | | | | The @measure_func annotations rely on the wrapped function respecting the logcontext rules. Add the necessary yields to make this work.
* Pull out bits of StateStore to a mixinRichard van der Hoff2017-11-141-33/+6
| | | | | | | | | ... so that we don't need to secretly gut-wrench it for use in the slaved stores. I haven't done the other stores yet, but we should. I'm tired of the workers breaking every time we tweak the stores because I forgot to gut-wrench the right method. fixes https://github.com/matrix-org/synapse/issues/2655.
* Make __init__ consitstent across Store heirarchyRichard van der Hoff2017-11-131-1/+1
| | | | | | Add db_conn parameters to the `__init__` methods of the *Store classes, so that they are all consistent, which makes the multiple inheritance work correctly (and so that we can later extract mixins which can be used in the slavedstores)
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-1/+1
| | | | what could possibly go wrong
* log when we get an exception handling replication updateshera2017-10-121-1/+5
|
* Fix replication. And notifyErik Johnston2017-07-202-0/+74
|
* Reduce log levels in tcp replicationErik Johnston2017-07-111-2/+2
|
* Serialize user ip command as jsonErik Johnston2017-06-271-5/+9
|
* Fix upErik Johnston2017-06-271-2/+1
|
* Make workers report to master for user ip updatesErik Johnston2017-06-275-0/+103
|
* Initialise exclusive_user_regexErik Johnston2017-06-211-0/+2
|
* Fix for workersErik Johnston2017-06-211-0/+3
|
* Initial worker implErik Johnston2017-06-161-0/+22
|
* Add cache for is_host_joinedErik Johnston2017-06-131-1/+1
|
* Merge pull request #2266 from matrix-org/erikj/host_in_roomErik Johnston2017-06-121-1/+0
|\ | | | | Change is_host_joined to use current_state table
| * Fix replicationErik Johnston2017-06-091-1/+0
| |
* | Fix replicationErik Johnston2017-06-091-1/+1
| |
* | Add missing notifierErik Johnston2017-06-091-1/+2
|/
* Faster cache for get_joined_hostsErik Johnston2017-05-251-0/+2
|
* Add missing storage function to slave storeErik Johnston2017-05-221-0/+2
|
* Add new storage functions to slave storeErik Johnston2017-05-041-0/+3
|
* Remove unused cacheErik Johnston2017-04-241-3/+0
|
* Merge pull request #2115 from matrix-org/erikj/dedupe_federation_replErik Johnston2017-04-122-0/+11
|\ | | | | Reduce federation replication traffic
| * Move get_presence_list_* to SlaveStoreErik Johnston2017-04-111-0/+10
| |
| * Reduce federation presence replication trafficErik Johnston2017-04-101-0/+1
| | | | | | | | | | | | | | | | 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.
* | Remove HTTP replication APIsErik Johnston2017-04-114-749/+0
|/
* TypoErik Johnston2017-04-101-1/+1
|
* Merge pull request #2109 from matrix-org/erikj/send_queue_fixErik Johnston2017-04-101-2/+2
|\ | | | | Fix up federation SendQueue and document types
| * CommentsErik Johnston2017-04-101-2/+2
| |
* | Up replication ping timeoutErik Johnston2017-04-101-2/+4
|/
* Merge pull request #2103 from matrix-org/erikj/no-double-encodeErik Johnston2017-04-071-28/+76
|\ | | | | Don't double encode replication data
| * Document types of the replication streamsErik Johnston2017-04-061-28/+76
| |
* | Fix incorrect type when using InvalidateCacheCommandErik Johnston2017-04-061-1/+1
| |
* | Add log linesErik Johnston2017-04-051-1/+2
| |
* | Rearrange metricsErik Johnston2017-04-051-16/+31
| |
* | Fix typoErik Johnston2017-04-051-2/+2
| |
* | Fixup some metrics for tcp replErik Johnston2017-04-051-0/+16
|/
* Merge pull request #2097 from matrix-org/erikj/repl_tcp_clientErik Johnston2017-04-0511-171/+302
|\ | | | | Move to using TCP replication
| * Change slave storage to use new replication interfaceErik Johnston2017-04-0310-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 factoryErik Johnston2017-04-031-0/+196
| |
* | Merge pull request #2098 from matrix-org/erikj/repl_tcp_fixErik Johnston2017-04-043-6/+15
|\ \ | | | | | | Advance replication streams even if nothing is listening
| * | Advance replication streams even if nothing is listeningErik Johnston2017-04-043-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 loggingErik Johnston2017-04-041-2/+2
|/
* Always advance stream tokensErik Johnston2017-04-031-1/+4
|
* Use callbacks to notify tcp replication rather than deferredsErik Johnston2017-03-311-14/+1
|
* Add a timestamp to USER_SYNC commandErik Johnston2017-03-313-9/+17
| | | | This timestamp is used to indicate when the user last sync'd
* Fix up docsErik Johnston2017-03-312-19/+3
|
* Add server side resource for tcp replicationErik Johnston2017-03-301-0/+300
|
* Initial TCP protocol implementationErik Johnston2017-03-303-0/+974
| | | | This defines the low level TCP replication protocol
* Define the various streams we will replicateErik Johnston2017-03-302-0/+423
|
* Make federation send queue take the current positionErik Johnston2017-03-301-1/+1
|
* Add new storage functions for new replicationErik Johnston2017-03-301-1/+1
| | | | | The new replication protocol will keep all the streams separate, rather than muxing multiple streams into one.
* Use presence replication stream to invalidate cacheErik Johnston2017-03-241-0/+1
| | | | | | Instead of using the cache invalidation replication stream to invalidate the _get_presence_cache, we can instead rely on the presence replication stream. This reduces the amount of replication traffic considerably.
* Replace some calls to cursor_to_dictErik Johnston2017-03-241-1/+0
| | | | | cursor_to_dict can be surprisinglh expensive for large result sets, so lets only call it when we need to.
* PEP8Erik Johnston2017-03-201-2/+0
|
* Don't send the full event json over replicationErik Johnston2017-03-172-30/+16
|
* 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.
* Add new storage function to slave storeErik Johnston2017-03-131-0/+4
|
* Fix it for the workersErik Johnston2017-03-101-0/+8
|
* Don't log unknown cache warnings in workersErik Johnston2017-02-281-1/+3
|
* Aggregate event push actionsErik Johnston2017-02-141-0/+6
|
* Cache get_presence storageErik Johnston2017-02-131-1/+3
|
* Merge pull request #1912 from matrix-org/markjh/roominitialsyncErik Johnston2017-02-131-0/+6
|\ | | | | Add db functions needed for room initial sync to slave
| * Add db functions needed for room initial sync to slaveMark Haines2017-02-131-0/+6
| |
* | Fix replicationErik Johnston2017-02-021-0/+3
| |
* | Only invalidate membership caches based on the cache streamErik Johnston2017-01-312-19/+5
|/ | | | | Before we completely invalidated get_users_in_room whenever we updated any current_state_events table. This was way too aggressive.
* Rename funcErik Johnston2017-01-301-1/+1
|
* Hook device list updates to replicationErik Johnston2017-01-272-1/+91
|
* Insert delta of current_state_events to be more efficientErik Johnston2017-01-201-10/+0
|
* Add cache to get_public_room_ids_at_stream_idErik Johnston2016-12-121-1/+2
|
* Add new API appservice specific public room listErik Johnston2016-12-061-1/+1
|
* Ensure only main or federation_sender process can send federation trafficErik Johnston2016-11-231-1/+1
|
* Explicit federation ackErik Johnston2016-11-231-5/+10
|
* Invalidate retry cache in both directionsErik Johnston2016-11-224-6/+84
|
* Store federation stream positions in the databaseErik Johnston2016-11-211-0/+3
|
* Handle sending events and device messages over federationErik Johnston2016-11-174-7/+25
|
* Hook up the send queue and create a federation sender workerErik Johnston2016-11-163-0/+32
|
* Fix check of wrong variableErik Johnston2016-10-111-1/+1
|
* Reduce DB hits for replicationErik Johnston2016-09-231-36/+103
| | | | | | | | | | | | | | Some streams will occaisonally advance their positions without actually having any new rows to send over federation. Currently this means that the token will not advance on the workers, leading to them repeatedly sending a slightly out of date token. This in turns requires the master to hit the DB to check if there are any new rows, rather than hitting the no op logic where we check if the given token matches the current token. This commit changes the API to always return an entry if the position for a stream has changed, allowing workers to advance their tokens correctly.
* Fix public room pagination for client_reader appErik Johnston2016-09-161-0/+1
|
* Add new storage function to slave storeErik Johnston2016-09-161-0/+1
|
* Use stream_change cache to make get_forward_extremeties_for_room cache more ↵Erik Johnston2016-09-151-1/+4
| | | | effective