summary refs log tree commit diff
path: root/synapse/replication/tcp (follow)
Commit message (Expand)AuthorAgeFilesLines
* Fix perf of `wait_for_stream_positions` (#16148)Erik Johnston2023-08-221-7/+12
* Add an admin endpoint to allow authorizing server to signal token revocations...Shay2023-08-221-0/+12
* Run pyupgrade for python 3.7 & 3.8. (#16110)Patrick Cloke2023-08-151-1/+1
* Add ability to wait for locks and add locks to purge history / room deletion ...Erik Johnston2023-07-312-0/+55
* Add Unix socket support for Redis connections (#15644)Jason Little2023-05-262-9/+63
* Update code to refer to "workers". (#15606)Patrick Cloke2023-05-161-2/+2
* Add redis SSL configuration options (#15312)Roel ter Maat2023-05-113-14/+76
* Add some clarification to the doc/comments regarding TCP replication (#15354)Mathieu Velten2023-03-302-32/+3
* Remove no-op send_command for Redis replication. (#15274)Patrick Cloke2023-03-161-25/+1
* Remove unused class: DirectTcpReplicationClientFactory. (#15272)Patrick Cloke2023-03-151-51/+0
* Merge branch 'master' into developH. Shay2023-02-281-0/+18
|\
| * Fix bug where 5s delays would occasionally happen. (#15150)Erik Johnston2023-02-241-0/+18
* | Bump black from 22.12.0 to 23.1.0 (#15103)dependabot[bot]2023-02-222-2/+0
|/
* Tweak logging for when a worker waits for its view of a replication stream to...reivilibre2023-02-211-2/+10
* Faster joins: omit partial rooms from eager syncs until the resync completes ...David Robertson2023-01-231-0/+1
* Faster joins: Update room stats and the user directory on workers when finish...Sean Quah2023-01-231-0/+6
* Enable Faster Remote Room Joins against worker-mode Synapse. (#14752)reivilibre2023-01-221-5/+2
* Reduce max time we wait for stream positions (#14881)Erik Johnston2023-01-201-10/+11
* Fix bug in wait for stream position (#14872)Erik Johnston2023-01-191-10/+19
* Wait for streams to catch up when processing HTTP replication. (#14820)Erik Johnston2023-01-182-26/+42
* Fix bug in `wait_for_stream_position` (#14856)Erik Johnston2023-01-171-1/+1
* Merge device list replication streams (#14833)Erik Johnston2023-01-173-27/+58
* Merge account data streams (#14826)Erik Johnston2023-01-134-32/+26
* Update all stream IDs after processing replication rows (#14723)Nick Mills-Barrett2023-01-041-0/+3
* Faster remote room joins: invalidate caches and unblock requests when receivi...reivilibre2022-12-191-1/+13
* Faster remote room joins: stream the un-partial-stating of events over replic...reivilibre2022-12-142-1/+34
* Faster remote room joins: unblock tasks waiting for full room state when the ...reivilibre2022-12-061-0/+11
* Faster remote room joins: stream the un-partial-stating of rooms over replica...reivilibre2022-12-052-0/+51
* Fix check to ignore blank lines in incoming TCP replication (#14449)Andrew Morgan2022-11-171-1/+1
* Batch up notifications after event persistence (#14033)Shay2022-10-051-9/+10
* Accept & store thread IDs for receipts (implement MSC3771). (#13782)Patrick Cloke2022-09-232-1/+3
* Support enabling/disabling pushers (from MSC3881) (#13799)Brendan Abolivier2022-09-211-3/+7
* Remove configuration options for direct TCP replication. (#13647)Patrick Cloke2022-09-061-37/+21
* Remove support for unstable private read receipts (#13653)Å imon Brandner2022-09-011-4/+1
* Support stable identifiers for MSC2285: private read receipts. (#13273)Å imon Brandner2022-08-051-1/+4
* Rate limit joins per-room (#13276)David Robertson2022-07-192-1/+17
* Revert "Make all `process_replication_rows` methods async (#13304)" (#13312)Erik Johnston2022-07-181-4/+2
* Make all `process_replication_rows` methods async (#13304)Nick Mills-Barrett2022-07-171-2/+4
* Remove groups replication code. (#12900)Patrick Cloke2022-05-313-28/+0
* Send `USER_IP` commands on a different Redis channel, in order to reduce traf...reivilibre2022-05-202-3/+15
* Lay some foundation work to allow workers to only subscribe to some kinds of ...reivilibre2022-05-192-12/+57
* Add `StreamKeyType` class and replace string literals with constants (#12567)Andrew Morgan2022-05-161-7/+11
* Update `replication.md` with info on TCP module structure (#12621)Shay2022-05-091-1/+1
* Update `_on_new_receipts()` to work with MSC2285 changes. (#12636)Å imon Brandner2022-05-051-5/+3
* Reduce log spam when running multiple event persisters (#12610)Erik Johnston2022-05-052-2/+16
* Add opentracing spans to calls to external cache (#12380)Erik Johnston2022-04-071-11/+20
* Refactor and convert `Linearizer` to async (#12357)Sean Quah2022-04-051-1/+1
* Move `update_client_ip` background job from the main process to the backgroun...reivilibre2022-04-012-14/+42
* Improve code documentation for the typing stream over replication. (#12211)reivilibre2022-03-113-4/+16
* Rename get_tcp_replication to get_replication_command_handler. (#12192)Patrick Cloke2022-03-104-7/+7
* Fix incorrect type hints for txredis. (#12042)Patrick Cloke2022-03-082-5/+5
* Spread out sending device lists to remote hosts (#12132)Erik Johnston2022-03-041-1/+1
* Remove `HomeServer.get_datastore()` (#12031)Richard van der Hoff2022-02-235-17/+17
* Add missing type hints to synapse.replication. (#11938)Patrick Cloke2022-02-088-128/+172
* Remove unnecessary ignores due to Twisted upgrade. (#11939)Patrick Cloke2022-02-082-3/+3
* Use auto_attribs/native type hints for attrs classes. (#11692)Patrick Cloke2022-01-131-17/+17
* Convert all namedtuples to attrs. (#11665)Patrick Cloke2021-12-302-70/+74
* Add type hints to `synapse/storage/databases/main/events_worker.py` (#11411)Sean Quah2021-11-261-3/+3
* Add missing type hints to `synapse.app`. (#11287)Patrick Cloke2021-11-101-2/+2
* Enable passing typing stream writers as a list. (#11237)Nick Barrett2021-11-032-3/+2
* Implement an `on_new_event` callback (#11126)Brendan Abolivier2021-10-261-1/+2
* Add type hints for most `HomeServer` parameters (#11095)Sean Quah2021-10-224-14/+29
* Fix logging context warnings when losing replication connection (#10984)Sean Quah2021-10-152-10/+26
* Require direct references to configuration variables. (#10985)Patrick Cloke2021-10-062-3/+6
* Pass str to twisted's IReactorTCP (#10895)David Robertson2021-09-302-3/+13
* Use direct references for configuration variables (part 6). (#10916)Patrick Cloke2021-09-291-1/+1
* Use direct references for configuration variables (part 5). (#10897)Patrick Cloke2021-09-241-2/+2
* Use direct references for some configuration variables (#10798)Patrick Cloke2021-09-134-5/+5
* Remove the unused public_room_list_stream (#10565)Andrew Morgan2021-08-172-28/+0
* Fix up type hints for Twisted 21.7 (#10490)Richard van der Hoff2021-07-281-1/+1
* Support for MSC2285 (hidden read receipts) (#10413)Å imon Brandner2021-07-281-0/+5
* Use inline type hints in various other places (in `synapse/`) (#10380)Jonathan de Jong2021-07-158-52/+50
* update black to 21.6b0 (#10197)Marcus2021-06-171-1/+1
* Add debug logging for issue #9533 (#9959)Richard van der Hoff2021-05-111-1/+0
* Time external cache response time (#9904)Erik Johnston2021-05-041-10/+26
* Split presence out of master (#9820)Erik Johnston2021-04-232-7/+28
* Remove `synapse.types.Collection` (#9856)Richard van der Hoff2021-04-221-2/+1
* Merge branch 'master' into developAndrew Morgan2021-04-211-1/+1
|\
| * Stop BackgroundProcessLoggingContext making new prometheus timeseries (#9854)Richard van der Hoff2021-04-211-1/+1
* | Merge branch 'master' into developAndrew Morgan2021-04-201-1/+1
|\|
| * Always use the name as the log ID. (#9829)Patrick Cloke2021-04-201-1/+1
* | Add presence federation stream (#9819)Erik Johnston2021-04-203-3/+31
* | Move some replication processing out of generic_worker (#9796)Erik Johnston2021-04-141-7/+224
* | Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-1412-12/+0
|/
* Record more information into structured logs. (#9654)Patrick Cloke2021-04-081-2/+3
* Update mypy configuration: `no_implicit_optional = True` (#9742)Jonathan de Jong2021-04-051-1/+1
* Add type hints for the federation sender. (#9681)Patrick Cloke2021-03-292-6/+14
* Make it possible to use dmypy (#9692)Erik Johnston2021-03-261-1/+1
* Import HomeServer from the proper module. (#9665)Patrick Cloke2021-03-231-1/+1
* Fix up types for the typing handler. (#9638)Patrick Cloke2021-03-171-7/+10
* Fix remaining mypy issues due to Twisted upgrade. (#9608)Patrick Cloke2021-03-153-3/+12
* Fix additional type hints from Twisted 21.2.0. (#9591)Patrick Cloke2021-03-123-38/+38
* Add logging for redis connection setup (#9590)Richard van der Hoff2021-03-111-0/+35
* Create a SynapseReactor type which incorporates the necessary reactor interfa...Patrick Cloke2021-03-081-1/+1
* Fix additional type hints from Twisted upgrade. (#9518)Patrick Cloke2021-03-031-3/+1
* Bump the mypy and mypy-zope versions. (#9529)Patrick Cloke2021-03-031-1/+1
* Fix deleting pushers when using sharded pushers. (#9465)Erik Johnston2021-02-222-50/+0
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-168-64/+47
* Ensure that we never stop reconnecting to redis (#9391)Erik Johnston2021-02-111-2/+24
* Precompute joined hosts and store in Redis (#9198)Erik Johnston2021-01-262-14/+106
* Periodically send pings to detect dead Redis connections (#9218)Erik Johnston2021-01-262-53/+98
* Allow moving account data and receipts streams off master (#9104)Erik Johnston2021-01-181-0/+19
* Allow running sendToDevice on workers (#9044)Erik Johnston2021-01-071-0/+9
* Various clean-ups to the logging context code (#8935)Patrick Cloke2020-12-141-2/+1
* Don't pull event from DB when handling replication traffic. (#8669)Erik Johnston2020-10-282-16/+25
* Don't unnecessarily start bg process in replication sending loop. (#8670)Erik Johnston2020-10-271-0/+10
* Start fewer opentracing spans (#8640)Erik Johnston2020-10-261-1/+3
* Make event persisters periodically announce position over replication. (#8499)Erik Johnston2020-10-124-21/+90
* Only send RDATA for instance local events. (#8496)Erik Johnston2020-10-092-6/+11
* Add unit test for event persister sharding (#8433)Erik Johnston2020-10-022-4/+42
* Enable mypy checking for unreachable code and fix instances. (#8432)Patrick Cloke2020-10-011-4/+6
* Various clean ups to room stream tokens. (#8423)Erik Johnston2020-09-291-4/+2
* Add EventStreamPosition type (#8388)Erik Johnston2020-09-241-3/+9
* Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-181-1/+1
* Use slots in attrs classes where possible (#8296)Patrick Cloke2020-09-141-2/+2
* Fix typos in comments.Patrick Cloke2020-09-141-1/+1
* Add experimental support for sharding event persister. Again. (#8294)Erik Johnston2020-09-142-3/+3
* Clean up `Notifier.on_new_room_event` code path (#8288)Erik Johnston2020-09-101-6/+3
* Fixup pusher pool notifications (#8287)Erik Johnston2020-09-091-1/+2
* Revert "Fixup pusher pool notifications"Erik Johnston2020-09-091-2/+1
* Fixup pusher pool notificationsErik Johnston2020-09-091-1/+2
* Stop sub-classing object (#8249)Patrick Cloke2020-09-044-5/+5
* Revert "Add experimental support for sharding event persister. (#8170)" (#8242)Brendan Abolivier2020-09-042-3/+3
* Add experimental support for sharding event persister. (#8170)Erik Johnston2020-09-022-3/+3
* Fix `wait_for_stream_position` for multiple waiters. (#8196)Erik Johnston2020-08-281-4/+2
* Remove `ChainedIdGenerator`. (#8123)Erik Johnston2020-08-191-1/+1
* Be stricter about JSON that is accepted by Synapse (#8106)Patrick Cloke2020-08-191-7/+5
* Separate `get_current_token` into two. (#8113)Erik Johnston2020-08-191-1/+1
* Reduce unnecessary whitespace in JSON. (#7372)David Vo2020-08-071-2/+3
* Handle replication commands synchronously where possible (#7876)Richard van der Hoff2020-07-273-86/+111
* Fix typing replication not being handled on master (#7959)Erik Johnston2020-07-271-0/+8
* Remove an unused prometheus metric (#7878)Richard van der Hoff2020-07-221-3/+1
* Track command processing as a background process (#7879)Richard van der Hoff2020-07-222-3/+38
* Fix deprecation warning: import ABC from collections.abc (#7892)Karthikeyan Singaravelan2020-07-201-1/+1
* Optimise queueing of inbound replication commands (#7861)Richard van der Hoff2020-07-161-116/+215
* Allow moving typing off master (#7869)Erik Johnston2020-07-162-3/+13
* Add ability to shard the federation sender (#7798)Erik Johnston2020-07-102-6/+8
* Fix some spelling mistakes / typos. (#7811)Patrick Cloke2020-07-095-5/+5
* Do not use simplejson in Synapse. (#7800)Patrick Cloke2020-07-081-9/+2
* Refactor getting replication updates from database v2. (#7740)Erik Johnston2020-07-071-46/+10
* isort 5 compatibility (#7786)Will Hunt2020-07-053-5/+3
* Refactor getting replication updates from database. (#7636)Erik Johnston2020-06-161-21/+8
* Discard RDATA from already seen positions. (#7648)Patrick Cloke2020-06-152-6/+28
* Fix bug in account data replication stream. (#7656)Erik Johnston2020-06-091-2/+8
* Typo fixes.Patrick Cloke2020-06-051-1/+1
* Ensure ReplicationStreamer is always started when replication enabled. (#7579)Erik Johnston2020-05-271-0/+3
* Add option to move event persistence off master (#7517)Erik Johnston2020-05-221-0/+10
* Add ability to wait for replication streams (#7542)Erik Johnston2020-05-221-2/+88
* Fix limit logic for AccountDataStream (#7384)Richard van der Hoff2020-05-151-12/+56
* Move EventStream handling into default ReplicationDataHandler (#7493)Erik Johnston2020-05-141-4/+33
* Have all instances correctly respond to REPLICATE command. (#7475)Erik Johnston2020-05-132-46/+48
* Fix Redis reconnection logic (#7482)Erik Johnston2020-05-132-2/+14
* Merge branch 'release-v1.13.0' into developAndrew Morgan2020-05-112-4/+2
|\
| * Fix errors from malformed log line (#7454)Richard van der Hoff2020-05-071-1/+1
| * Drop support for redis.dbid (#7450)Richard van der Hoff2020-05-071-3/+1
* | Support any process writing to cache invalidation stream. (#7436)Erik Johnston2020-05-077-106/+100
* | Merge branch 'release-v1.13.0' into developRichard van der Hoff2020-05-062-34/+69
|\|
| * Merge branch 'release-v1.13.0' into rav/fix_dropped_messagesRichard van der Hoff2020-05-051-1/+1
| |\
| * \ Merge branch 'release-v1.13.0' into rav/fix_dropped_messagesRichard van der Hoff2020-05-056-53/+74
| |\ \
| * | | Wait for a POSITION on the right connection before accepting RDATARichard van der Hoff2020-05-052-19/+38
| * | | Wait to subscribe before sending REPLICATERichard van der Hoff2020-05-052-20/+35
* | | | Merge branch 'release-v1.13.0' into developRichard van der Hoff2020-05-061-1/+1
|\ \ \ \ | | |_|/ | |/| |
| * | | Move logs about discarded RDATA to debug (#7421)Brendan Abolivier2020-05-051-1/+1
| | |/ | |/|
* / | Fix catchup-on-reconnect for the Federation Stream (#7374)Richard van der Hoff2020-05-053-11/+24
|/ /
* | Fix redis password support. (#7401)Erik Johnston2020-05-041-0/+3
* | Thread through instance name to replication client. (#7369)Erik Johnston2020-05-015-27/+69
* | Use `stream.current_token()` and remove `stream_positions()` (#7172)Erik Johnston2020-05-012-27/+2
|/
* Workaround for assertion errors from db_query_to_update_function (#7378)Richard van der Hoff2020-05-011-2/+1
* Add instance name to RDATA/POSITION commands (#7364)Erik Johnston2020-04-292-14/+40
* Don't relay REMOTE_SERVER_UP cmds to same conn. (#7352)Erik Johnston2020-04-293-16/+51
* Fix limit logic for EventsStream (#7358)Richard van der Hoff2020-04-292-15/+11
* Run replication streamers on workers (#7146)Erik Johnston2020-04-281-18/+15
* Fix EventsStream raising assertions when it falls behindRichard van der Hoff2020-04-241-18/+95
* Make it clear that the limit for an update_function is a targetRichard van der Hoff2020-04-231-5/+9
* Remove 'limit' param from `get_repl_stream_updates` APIRichard van der Hoff2020-04-231-4/+1
* Stop the master relaying USER_SYNC for other workers (#7318)Richard van der Hoff2020-04-222-12/+10
* Fix replication metrics when using redis (#7325)Erik Johnston2020-04-222-37/+29
* Another go at fixing one-word commands (#7326)Richard van der Hoff2020-04-221-1/+1
* Add ability to run replication protocol over redis. (#7040)Erik Johnston2020-04-225-34/+255
* On catchup, process each row with its own stream id (#7286)Richard van der Hoff2020-04-201-5/+68
* Improve type checking in `replication.tcp.Stream` (#7291)Richard van der Hoff2020-04-174-122/+142
* Fix 'generator object is not subscriptable' error (#7290)Richard van der Hoff2020-04-161-1/+2
* Handle one-word replication commands correctlyRichard van der Hoff2020-04-071-3/+11
* Fix warnings about not calling superclass constructorRichard van der Hoff2020-04-071-15/+24
* Remove vestigal references to SYNC replication commandRichard van der Hoff2020-04-072-14/+0
* Fix race in replication (#7226)Erik Johnston2020-04-072-29/+47
* Move server command handling out of TCP protocol (#7187)Erik Johnston2020-04-073-269/+236
* Move client command handling out of TCP protocol (#7185)Erik Johnston2020-04-064-322/+336
* Remove connections per replication stream metric. (#7195)Erik Johnston2020-04-011-16/+0
* Remove usage of "conn_id" for presence. (#7128)Erik Johnston2020-03-304-18/+50
* Move catchup of replication streams to worker. (#7024)Erik Johnston2020-03-258-229/+225
* Convert `*StreamRow` classes to inner classes (#7116)Richard van der Hoff2020-03-232-96/+101
* Fix processing of `groups` stream, and use symbolic names for streams (#7117)Richard van der Hoff2020-03-231-18/+52
* Remove concept of a non-limited stream. (#7011)Erik Johnston2020-03-202-47/+28
* Change device list replication to match new semantics.Erik Johnston2020-02-281-4/+9
* Port PresenceHandler to async/await (#6991)Erik Johnston2020-02-261-1/+5
* Increase MAX_EVENTS_BEHIND for replication clientsErik Johnston2020-02-211-1/+1
* Fix sending server up commands from workers (#6811)Erik Johnston2020-01-301-0/+4
* Propagate cache invalidates from workers to other workers. (#6748)Erik Johnston2020-01-272-4/+7
* Allow streaming cache invalidate all to workers. (#6749)Erik Johnston2020-01-221-5/+21
* Wake up transaction queue when remote server comes back online (#6706)Erik Johnston2020-01-174-0/+44
* Port synapse.replication.tcp to async/await (#6666)Erik Johnston2020-01-165-85/+63
* Fixup synapse.replication to pass mypy checks (#6667)Erik Johnston2020-01-147-77/+93
* Reduce the reconnect time when replication fails. (#6617)Richard van der Hoff2020-01-031-1/+2
* lintAndrew Morgan2019-11-081-2/+1
* Remove content from being sent for account data rdata streamAndrew Morgan2019-11-081-3/+3
* document the REPLICATE command a bit better (#6305)Richard van der Hoff2019-11-042-8/+86
* Merge branch 'develop' into uhoreg/cross_signing_fix_workers_notifyHubert Chathi2019-10-312-2/+2
|\
| * Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-312-2/+2
* | make user signatures a separate streamHubert Chathi2019-10-302-0/+19
|/
* Remove unnecessary parentheses around return statements (#5931)Andrew Morgan2019-08-301-4/+4
* Replace returnValue with return (#5736)Amber Brown2019-07-232-7/+7
* 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-207-183/+228
* Fix relations in worker modeErik Johnston2019-05-162-5/+7
* Combine the CurrentStateDeltaStream into the EventStreamRichard van der Hoff2019-03-273-23/+33
* Make EventStream rows have a typeRichard van der Hoff2019-03-272-14/+88
* Skip building a ROW_TYPE when building updatesRichard van der Hoff2019-03-271-2/+2
* Add parse_row method to replication stream classRichard van der Hoff2019-03-273-3/+19
* 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
* Fix bug where read-receipts lost their timestamps (#4927)Richard van der Hoff2019-03-252-11/+27
* Add a config option for torture-testing worker replication. (#4902)Richard van der Hoff2019-03-201-1/+17
* 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
* Merge pull request #4749 from matrix-org/erikj/replication_connection_backoffErik Johnston2019-02-273-5/+39
|\
| * Move connecting logic into ClientReplicationStreamProtocolErik Johnston2019-02-272-18/+17
| * Increase the max delay between retry attemptsErik Johnston2019-02-261-1/+1
| * Fix tightloop over connecting to replication serverErik Johnston2019-02-262-4/+39
* | Limit cache invalidation replication line length (#4748)Erik Johnston2019-02-271-1/+16
|/
* Don't truncate command name in metricsErik Johnston2018-10-291-2/+2
* Make the replication logger quieter (#4108)Amber Brown2018-10-291-1/+1
* Fix minor typo in exceptionTravis Ralston2018-09-131-1/+1
* Remove conn_idErik Johnston2018-09-041-2/+2
* Remove conn_id from repl prometheus metricsErik Johnston2018-09-031-10/+10
* Logcontexts for replication command handlersRichard van der Hoff2018-08-173-15/+43
* Fix unit testsRichard van der Hoff2018-07-251-1/+1
* Wrap a number of things that run in the backgroundRichard van der Hoff2018-07-251-6/+8
* run isortAmber Brown2018-07-094-30/+41
* Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-281-6/+10
* Remove all global reactor imports & pass it around explicitly (#3424)Amber Brown2018-06-252-5/+5
* Fix tcp protocol metrics naming (#3410)Amber Brown2018-06-211-18/+35
* Fix replication metricsRichard van der Hoff2018-06-041-2/+2
* 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
| |\