Dendrite is a second-generation Matrix homeserver written in Go!
Go to file
Neil Alexander 42dd962425
Persistent federation sender queues (PDUs) (#1173)
* Initial work on persistent queues

* Update index for event ID and server name

* Put things into database (postgres for now)

* Duplicate postgres code into sqlite for now just to stop build errors, will fix SQLite soon

* Fix table name

* Fix index

* Fix table name

* Use RETURNING because LastInsertID is not supported by postgres

* Use functions

* Marshal headered event

* Don't error on now rows

* Don't block if there are PDUs waiting

* Try to tidy up JSON

* Debug logging

* Fix query, use transactions in postgres

* Clean up

* Rehydrate more opportunistically

* Fix SQLite

* remove unused types

* Review comments

* Shuffle things around a bit

* Clean up transaction properly

* Don't send empty transactions

* Reduce unnecessary retries

* Count PDUs to make more resilient

* Don't stop when there is work to be done

* Try to limit wakeups

* well this is tedious

* Fix race in incomplete transactions

* Thread safety on transaction ID/count
2020-07-01 11:46:38 +01:00
.github Add SyTest support to CI (#704) 2019-05-24 15:00:03 +01:00
appservice Move account/device DBs to userapi (#1141) 2020-06-17 12:05:56 +01:00
build Push serverkeyapi docker image to registry as well (#1154) 2020-06-23 09:51:38 +01:00
clientapi Remove membership table from account DB (#1172) 2020-06-30 13:34:59 +01:00
cmd Persistent federation sender queues (PDUs) (#1173) 2020-07-01 11:46:38 +01:00
currentstateserver Remove membership table from account DB (#1172) 2020-06-30 13:34:59 +01:00
docs User API polylith component (#1151) 2020-06-19 09:37:19 +01:00
eduserver BREAKING: Make eduserver/appservice use userapi (#1138) 2020-06-16 17:39:56 +01:00
federationapi Don't include current state in processEventWithMissingState (#1126) 2020-06-29 14:39:21 +01:00
federationsender Persistent federation sender queues (PDUs) (#1173) 2020-07-01 11:46:38 +01:00
internal Remove membership table from account DB (#1172) 2020-06-30 13:34:59 +01:00
keyserver Hacks for supporting Riot iOS (#1148) 2020-06-17 17:41:45 +01:00
mediaapi Fallback parsing for Content-Disposition minefield (#1144) 2020-06-17 14:26:45 +01:00
publicroomsapi Make userapi responsible for checking access tokens (#1133) 2020-06-16 14:10:55 +01:00
roomserver Finish implementing retiring invites (#1166) 2020-06-26 11:07:52 +01:00
serverkeyapi More server key updates, tests (#1129) 2020-06-16 13:11:20 +01:00
syncapi Implement /sync limited and read timeline limit from stored filters (#1168) 2020-06-26 15:34:41 +01:00
userapi Remove membership table from account DB (#1172) 2020-06-30 13:34:59 +01:00
.dockerignore Docker Hub (#1053) 2020-05-21 13:02:28 +01:00
.gitignore Support embedding Riot Web (#1113) 2020-06-11 10:16:46 +01:00
.golangci.yml Get room versions from database (#918) 2020-03-17 18:00:10 +00:00
are-we-synapse-yet.list Update awsy list 2020-06-30 10:26:26 +01:00
are-we-synapse-yet.py Fix div 0 error and add new tests to list 2020-06-26 11:34:25 +01:00
build-dendritejs.sh Bake in git commit into dendritejs binary (#1048) 2020-05-19 16:42:30 +01:00
build.sh Unbreak the wasm build (#986) 2020-04-28 16:22:00 +01:00
dendrite-config.yaml Add a new component: currentstateserver (#1171) 2020-06-30 10:37:21 +01:00
go.mod Honour event size limits and return 413 (#1167) 2020-06-26 12:51:54 +01:00
go.sum Honour event size limits and return 413 (#1167) 2020-06-26 12:51:54 +01:00
LICENSE Add Apache Version 2.0 license and headers to all golang files 2017-04-21 00:40:52 +02:00
README.md Update INSTALL.md, move docs (#1034) 2020-05-14 16:49:18 +01: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 Make same membership transitions 403, add sytests (#1161) 2020-06-24 18:19:14 +01:00
sytest-whitelist Implement /sync limited and read timeline limit from stored filters (#1168) 2020-06-26 15:34:41 +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.