Dendrite is a second-generation Matrix homeserver written in Go!
Go to file
Neil Alexander a16db1c408
Improve federation sender performance, implement backoff and blacklisting, fix up invites a bit (#1007)
* Improve federation sender performance and behaviour, add backoff

* Tweaks

* Tweaks

* Tweaks

* Take copies of events before passing to destination queues

* Don't accidentally drop queued messages

* Don't take copies again

* Tidy up a bit

* Break out statistics (tracked component-wide), report success and failures from Perform actions

* Fix comment, use atomic add

* Improve logic a bit, don't block on wakeup, move idle check

* Don't retry sucessful invites, don't dispatch sendEvent, sendInvite etc

* Dedupe destinations, fix other bug hopefully

* Dispatch sends again

* Federation sender to ignore invites that are destined locally

* Loopback invite events

* Remodel a bit with channels

* Linter

* Only loopback invite event if we know the room

* We should tell other resident servers about the invite if we know about the room

* Correct invite signing

* Fix invite loopback

* Check HTTP response codes, push new invites to front of queue

* Review comments
2020-05-07 12:42:06 +01:00
.github Add SyTest support to CI (#704) 2019-05-24 15:00:03 +01:00
appservice Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
clientapi only send new events to RS; add tests for /state_ids and /event (#1011) 2020-05-06 18:03:25 +01:00
cmd Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
common Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
docker Rename the typing server to EDU server (#948) 2020-03-30 15:02:20 +01:00
docs Update guides for running sytest (#958) 2020-04-12 13:48:24 +01:00
eduserver Fix sarama import URLs (#856) 2020-04-22 15:26:56 +01:00
federationapi only send new events to RS; add tests for /state_ids and /event (#1011) 2020-05-06 18:03:25 +01:00
federationsender Improve federation sender performance, implement backoff and blacklisting, fix up invites a bit (#1007) 2020-05-07 12:42:06 +01:00
hooks run commit hook on what we're committing (#356) 2017-11-27 12:19:04 +00:00
internal/sqlutil Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
mediaapi Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
publicroomsapi Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
roomserver Improve federation sender performance, implement backoff and blacklisting, fix up invites a bit (#1007) 2020-05-07 12:42:06 +01:00
scripts Move files back if linting fails (#810) 2019-12-25 18:14:58 +00:00
syncapi Fix ordering when backfilling (#1000) 2020-05-01 16:41:13 +01:00
.editorconfig Add .editorconfig (#179) 2017-08-05 02:25:40 +01:00
.gitignore Update .gitignore 2020-03-10 11:42:40 +00:00
.golangci.yml Get room versions from database (#918) 2020-03-17 18:00:10 +00:00
are-we-synapse-yet.list Add new sytests to list 2020-04-24 10:39:11 +01:00
are-we-synapse-yet.py Are we synapse yet? (#960) 2020-04-14 16:05:15 +01:00
build.sh Unbreak the wasm build (#986) 2020-04-28 16:22:00 +01:00
CODE_STYLE.md replaced gometalinter description with golangci-lint (#837) 2019-12-25 18:28:10 +00:00
CONTRIBUTING.md Update documentation for Go 1.13 (#867) 2020-02-06 11:54:26 +00:00
dendrite-config.yaml Limit database connections (#980, #564) (#998) 2020-05-01 13:34:53 +01:00
DESIGN.md Clean up README a bit (#289) 2017-10-10 09:33:41 +01:00
go.mod Fix RespState/RespSendJoin (#1005) 2020-05-05 10:53:38 +01:00
go.sum Fix RespState/RespSendJoin (#1005) 2020-05-05 10:53:38 +01:00
INSTALL.md Update documentation for Go 1.13 (#867) 2020-02-06 11:54:26 +00:00
LICENSE Add Apache Version 2.0 license and headers to all golang files 2017-04-21 00:40:52 +02:00
p2p.md p2p: Use JSServer for comms rather than GoJsConn (#888) 2020-03-11 12:18:37 +00:00
README.md Kick CI 2020-02-28 14:46:03 +00:00
show-expected-fail-tests.sh Fix newlines between white/blacklist test names in buildkite annotations (#1003) 2020-05-04 14:48:49 +01:00
sytest-blacklist Move /room/{roomID}/state endpoints into client API (#606) (#962) 2020-04-14 18:36:08 +01:00
sytest-whitelist Enable v5 rooms (#992) 2020-04-29 19:37:00 +01:00
WIRING.md Rename the typing server to EDU server (#948) 2020-03-30 15:02:20 +01:00

Dendrite Build Status Dendrite Dev on Matrix Dendrite on Matrix

Dendrite will be a second-generation Matrix homeserver written in Go.

It's still very much a work in progress, but installation instructions can be found in INSTALL.md. It is not recommended to use Dendrite as a production homeserver at this time.

An overview of the design can be found in DESIGN.md.

Contributing

Everyone is welcome to help out and contribute! See CONTRIBUTING.md to get started!

Please note that, as of February 2020, Dendrite now only targets Go 1.13 or later. Please ensure that you are using at least Go 1.13 when developing for Dendrite.

Discussion

For questions about Dendrite we have a dedicated room on Matrix #dendrite:matrix.org. Development discussion should happen in #dendrite-dev:matrix.org.

Progress

There's plenty still to do to make Dendrite usable! We're tracking progress in a project board.