Squashed commit of the following:
commit b5c55faf98
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jul 1 12:00:32 2022 +0100
Version 0.8.9 (#2549)
* Version 0.8.9
* Update changelog
commit b50a24c666
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jul 1 10:54:07 2022 +0100
Roomserver producers package (#2546)
* Give the roomserver a producers package
* Change init point
* Populate ACLs API
* Fix build issues
* `RoomEventProducer` naming
commit 89cd0e8fc1
Author: Till <2353100+S7evinK@users.noreply.github.com>
Date: Fri Jul 1 11:49:26 2022 +0200
Try to fix backfilling (#2548)
* Try to fix backfilling
* Return start/end to not confuse clients
* Update GMSL
* Update GMSL
commit 086f182e24
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jul 1 09:50:06 2022 +0100
Disable WebAssembly builds for now
commit 54bed4c593
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jul 1 09:37:54 2022 +0100
Blacklist `Guest users can join guest_access rooms` test until it can be investigated
commit 561c159ad7
Author: Till <2353100+S7evinK@users.noreply.github.com>
Date: Thu Jun 30 12:34:37 2022 +0200
Silence presence logs (#2547)
commit 519bc1124b
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Wed Jun 29 15:29:39 2022 +0100
Add `evacuateUser` endpoint, use it when deactivating accounts (#2545)
* Add `evacuateUser` endpoint, use it when deactivating accounts
* Populate the API
* Clean up user devices when deactivating
* Include invites, delete pushers
commit 2dea466685
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Wed Jun 29 12:32:24 2022 +0100
Return an error if trying to invite a malformed user ID (#2543)
commit 2086992caf
Author: Till <2353100+S7evinK@users.noreply.github.com>
Date: Wed Jun 29 10:49:12 2022 +0200
Don't return `end` if there are not more messages (#2542)
* Be more spec compliant
* Move lazyLoadMembers to own method
commit 920a20821b
Author: Jean Lucas <jean@4ray.co>
Date: Mon Jun 27 04:15:19 2022 -0400
Fix nats.go commit (#2540)
Signed-off-by: Jean Lucas <jean@4ray.co>
commit 7120eb6bc9
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Wed Jun 15 14:27:07 2022 +0100
Add `InputDeviceListUpdate` to the keyserver, remove old input API (#2536)
* Add `InputDeviceListUpdate` to the keyserver, remove old input API
* Fix copyright
* Log more information when a device list update fails
commit 1b90cc9536
Author: Till <2353100+S7evinK@users.noreply.github.com>
Date: Wed Jun 15 12:50:02 2022 +0200
Fix rare panic when returning user devices over federation (#2534)
commit 4c2a10f1a6
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jun 13 15:11:10 2022 +0100
Handle state before, send history visibility in output (#2532)
* Check state before event
* Tweaks
* Refactor a bit, include in output events
* Don't waste time if soft failed either
* Tweak control flow, comments, use GMSL history visibility type
commit c500958583
Author: Emanuele Aliberti <dev@mtka.eu>
Date: Mon Jun 13 13:08:46 2022 +0200
generic CaddyFile in front of Dendrite (monolith) (#2531)
for Caddy 2.5.x
Co-authored-by: emanuele.aliberti <emanuele.aliberti@mtka.eu>
commit e1136f4d3e
Author: Till Faelligen <davidf@element.io>
Date: Mon Jun 13 11:46:59 2022 +0200
Make the linter happy again
commit 0a7f7dc716
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jun 13 10:16:30 2022 +0100
Add `--difference` to `resolve-state` tool
commit 89d2adadbd
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jun 10 10:58:04 2022 +0100
Attempt to raise the file descriptor limit at startup (#2527)
commit 1030072285
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jun 10 10:18:32 2022 +0100
Rename the page to "Optimise your installation"
commit 16ed1633b6
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jun 10 10:15:14 2022 +0100
Highlighting in docs
commit e2a64773ce
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Jun 10 10:14:15 2022 +0100
Add new next steps page to the documentation
commit 660f7839f5
Author: Till <2353100+S7evinK@users.noreply.github.com>
Date: Thu Jun 9 18:38:07 2022 +0200
Correctly redact events over federation (#2526)
* Ensure we check powerlevel/origin before redacting an event
* Add passing test
* Use pl.UserLevel
* Make check more readable, also check for the sender
* syncapi: don't return early for no-op incremental syncs
Comments explain why, but basically it's an inefficient use
of bandwidth and some sytests rely on /sync to block.
* Honour timeouts
* Actually return a response with timeout=0
* bugfix: fix race condition when updating presence via /sync
Previously when presence is updated via /sync, we would send the presence update
asyncly via NATS. This created a race condition:
- If the presence update is processed quickly, the /sync which triggered the presence
update would see an online presence.
- If the presence update was processed slowly, the /sync which triggered the presence
update would see an offline presence.
This is the root cause behind the flakey sytest: 'User sees their own presence in a sync'.
The fix is to ensure we update the database/advance the stream position synchronously
for local users.
* Bugfix for test
* Fix flakey sytest 'Local device key changes get to remote servers'
* Debug logs
* Remove internal/test and use /test only
Remove a lot of ancient code too.
* Use FederationRoomserverAPI in more places
* Use more interfaces in federationapi; begin adding regression test
* Linting
* Add regression test
* Unbreak tests
* ALL THE LOGS
* Fix a race condition which could cause events to not be sent to servers
If a new room event which rewrites state arrives, we remove all joined hosts
then re-calculate them. This wasn't done in a transaction so for a brief period
we would have no joined hosts. During this interim, key change events which arrive
would not be sent to destination servers. This would sporadically fail on sytest.
* Unbreak new tests
* Linting
* Fix OTK spam
* Update comment
* Optimize selectKeysCountSQL to only return max 100 keys
* Return CurrentPosition if the request timed out
* Revert "Return CurrentPosition if the request timed out"
This reverts commit 7dbdda9641.
Co-authored-by: kegsay <kegan@matrix.org>
* Add very basic syncapi tests
* Add a way to inject jetstream messages
* implement add_state_ids
* bugfixes
* Unbreak tests
* Remove now un-needed API call
* Linting
* Don't ask roomserver for events we already have in federation API
* Check number of events returned is as expected
* Preallocate array
* Improve shape a bit
* syncapi: use finer-grained interfaces when making the syncapi
* Use specific interfaces for syncapi-roomserver interactions
* Define query access token api for shared http auth code
* Initial phone home stats queries
* Add userAgent to UpdateDeviceLastSeen
Add new Table for tracking daily user vists
* Add user_daily_visits table
* Fix queries
* userapi stats tables & queries
* userapi interface and internal api
* sycnapi stats queries
* testing phone home stats
* Add complete config to syncapi
* add missing files
* Fix queries
* Send empty request
* Add version & monolith stats
* Add configuration for phone home stats
* Move WASM to its own file, add config and comments
* Add tracing methods
* Add total rooms
* Add more fields, actually send data somewhere
* Move stats to the userapi
* Move phone home stats to util package
* Cleanup
* Linter & parts of GH comments
* More GH comments changes
- Move comments to SQL statements
- Shrink interface, add struct for stats
- No fatal errors, use defaults
* Be more explicit when querying
* Fix wrong calculation & wrong query params
Add tests
* Add Windows stats
* ADd build constraint
* Use new testing structure
Fix issues with getting values when using SQLite
Fix wrong AddDate value
Export UpdateUserDailyVisits
* Fix query params
* Fix test
* Add comment about countR30UsersSQL and countR30UsersV2SQL; fix test
* Update config
* Also update example config file
* Use OS level proxy, update logging
Co-authored-by: kegsay <kegan@matrix.org>
* Simplify federation API `AddPublicRoutes`
* Simplify client API `AddPublicRoutes`
* Simplify media API `AddPublicRoutes`
* Simplify sync API `AddPublicRoutes`
* Simplify `AddAllPublicRoutes`
* Only load members of newly joined rooms
* Comment that the query is prepared at runtime
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Use filter and limit presence count
* More limiting
* More limiting
* Fix unit test
* Also limit presence by last_active_ts
* Update query, use "from" as the initial lastPos
* Get 1000 presence events, they are filtered later
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Don't create fictitious presence entries for users that don't have any
* Update whitelist, since that test probably shouldn't be passing
* Fix panics
Squashed commit of the following:
commit 0ec8de57261d573a5f88577aa9d7a1174d3999b9
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Tue Apr 26 16:56:30 2022 +0100
Select filter onto provided target filter
commit da40b6fffbf5737864b223f49900048f557941f9
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Tue Apr 26 16:48:00 2022 +0100
Specify other field too
commit ffc0b0801f63bb4d3061b6813e3ce5f3b4c8fbcb
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Tue Apr 26 16:45:44 2022 +0100
Send as much account data as possible during complete sync
* Initial work on lazyloading
* Partially implement lazy loading on /sync
* Rename methods
* Make missing tests pass
* Preallocate slice, even if it will end up with fewer values
* Let the cache handle the user mapping
* Linter
* Cap cache growth
* Precompute values for `userIDSet` in sync notifier
* Mutexes
* Fixes
* Sensible initial value
* Update syncapi/notifier/notifier.go
Co-authored-by: Till <2353100+S7evinK@users.noreply.github.com>
* Placate the almighty linter
Co-authored-by: Till <2353100+S7evinK@users.noreply.github.com>
* syncapi: add more tests; fix more bugs
bugfixes:
- The postgres impl of TopologyTable.SelectEventIDsInRange did not use the provided txn
- The postgres impl of EventsTable.SelectEvents did not preserve the ordering of the input event IDs in the output events slice
- The sqlite impl of EventsTable.SelectEvents did not use a bulk `IN ($1)` query.
Added tests:
- `TestGetEventsInRangeWithTopologyToken`
- `TestOutputRoomEventsTable`
- `TestTopologyTable`
* -p 1 for now
* Add response size and requests total to internal handler
* Move MustRegister calls to New* funcs
* Move MustRegister back to init
* Init at some place, minimize changes
* Add test infrastructure code for dendrite unit/integ tests
Start re-enabling some syncapi storage tests in the process.
* Linting
* Add postgres service to unit tests
* dendrite not syncv3
* Skip test which doesn't work
* Linting
* Add `jetstream.PrepareForTests`
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Add ignore users
* Ignore users in pushrules
Add passing tests
* Update sytest lists
* Store ignore knowledge in the sync API
* Fix copyrights
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>