Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Persistent, performant, reliable federation queue #3605

Merged
merged 72 commits into from
Sep 9, 2023
Merged
Show file tree
Hide file tree
Changes from 52 commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
4506309
persistent activity queue
phiresky Jul 23, 2023
5521204
fixes
phiresky Jul 23, 2023
a2e3fc8
fixes
phiresky Jul 23, 2023
c19211f
make federation workers function callable from outside
phiresky Jul 23, 2023
0d6042e
log federation instances
phiresky Jul 23, 2023
2d086e8
dead instance detection not needed here
phiresky Jul 23, 2023
b27277c
taplo fmt
phiresky Jul 23, 2023
bfa1e57
split federate bin/lib
phiresky Jul 24, 2023
3f51168
minor fix
phiresky Jul 24, 2023
080c380
better logging
phiresky Jul 24, 2023
82c2243
log
phiresky Jul 24, 2023
14479ce
create struct to hold cancellable task for readability
phiresky Jul 30, 2023
59f08d8
use boxfuture for readability
phiresky Jul 30, 2023
11e4c45
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Jul 30, 2023
fceec6a
reset submodule
phiresky Jul 30, 2023
2d3ad1b
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Aug 2, 2023
bddcbab
fix
phiresky Aug 2, 2023
e6e96a7
fix lint
phiresky Aug 2, 2023
0f77534
swap
phiresky Aug 2, 2023
ef60dc0
remove json column, use separate array columns instead
phiresky Aug 3, 2023
7f82bd0
some review comments
phiresky Aug 3, 2023
7e72ad8
make worker a struct for readability
phiresky Aug 3, 2023
de50f37
minor readability
phiresky Aug 3, 2023
5c686f7
add local filter to community follower view
phiresky Aug 3, 2023
8a6b3c2
remove separate lemmy_federate entry point
phiresky Aug 3, 2023
c2ec41f
fix remaining duration
phiresky Aug 3, 2023
bdbb499
address review comments mostly
phiresky Aug 10, 2023
574e23c
Merge branch 'main' into persistent-queue
dessalines Aug 22, 2023
eb761bb
fix lint
phiresky Aug 22, 2023
5b4ecfb
upgrade actitypub-fed to simpler interface
phiresky Aug 22, 2023
b99a93b
Merge branch 'main' into persistent-queue
dessalines Aug 22, 2023
9425106
fix sql format
phiresky Aug 23, 2023
7fe2724
increase delays a bit
phiresky Aug 23, 2023
10e4940
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Aug 24, 2023
9c79347
fixes after merge
phiresky Aug 24, 2023
49fa1b2
remove selectable
phiresky Aug 26, 2023
68b69ee
fix instance selectable
phiresky Aug 26, 2023
b526727
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Aug 29, 2023
062e398
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Aug 29, 2023
6e445ac
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Aug 31, 2023
c654cee
add comment
phiresky Sep 1, 2023
284ebb3
start federation based on latest id at the time
phiresky Sep 1, 2023
557576a
rename federate process args
phiresky Sep 1, 2023
e945e9f
dead instances in one query
phiresky Sep 1, 2023
884307a
filter follow+report activities by local
phiresky Sep 1, 2023
2767ab4
remove synchronous federation
phiresky Sep 1, 2023
44703e7
lint
phiresky Sep 1, 2023
77b8adb
fix federation tests by waiting for results to change
phiresky Sep 3, 2023
77219ff
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Sep 4, 2023
769a1f5
fix fed test
phiresky Sep 5, 2023
b62d520
fix comment report
phiresky Sep 5, 2023
8cb6408
wait some more
phiresky Sep 5, 2023
3000809
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Sep 6, 2023
8cb8880
Apply suggestions from code review
phiresky Sep 6, 2023
21e3f7e
Merge remote-tracking branch 'mine/persistent-queue' into persistent-…
phiresky Sep 6, 2023
8e0f4b9
fix most remaining tests
phiresky Sep 6, 2023
9d96070
wait until private messages
phiresky Sep 6, 2023
838bb42
fix community tests
phiresky Sep 6, 2023
a1a925d
Merge remote-tracking branch 'origin/main' into persistent-queue
phiresky Sep 7, 2023
603c53f
fix community tests
phiresky Sep 7, 2023
d10660e
move arg parse
phiresky Sep 7, 2023
35a408d
use instance_id instead of domain in federation_queue_state table
phiresky Sep 8, 2023
e9f2303
Merge branch 'main' into persistent-queue
dessalines Sep 8, 2023
5c10654
fix tests hopefully
phiresky Sep 9, 2023
f70a02d
.then
phiresky Sep 9, 2023
0746073
move create http server to separate function
phiresky Sep 9, 2023
4d7c984
move prom metrics
phiresky Sep 9, 2023
fe34df0
fix test
phiresky Sep 9, 2023
156d441
restart federation worker when it errors
phiresky Sep 9, 2023
e84bbd4
don't fail worker if a single activity cannot be sent
phiresky Sep 9, 2023
6e0bc61
clippy
phiresky Sep 9, 2023
4537944
no unwrap
phiresky Sep 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
190 changes: 120 additions & 70 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ members = [
"crates/db_views_actor",
"crates/db_views_actor",
"crates/routes",
"crates/federate",
]

[workspace.dependencies]
Expand All @@ -67,7 +68,7 @@ lemmy_routes = { version = "=0.18.1", path = "./crates/routes" }
lemmy_db_views = { version = "=0.18.1", path = "./crates/db_views" }
lemmy_db_views_actor = { version = "=0.18.1", path = "./crates/db_views_actor" }
lemmy_db_views_moderator = { version = "=0.18.1", path = "./crates/db_views_moderator" }
activitypub_federation = { version = "0.5.0-beta.2", default-features = false, features = [
activitypub_federation = { version = "0.5.0-beta.3", default-features = false, features = [
"actix-web",
] }
diesel = "2.1.0"
Expand All @@ -88,7 +89,6 @@ tracing-error = "0.2.0"
tracing-log = "0.1.3"
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
url = { version = "2.4.0", features = ["serde"] }
url_serde = "0.2.0"
reqwest = { version = "0.11.18", features = ["json", "blocking", "gzip"] }
reqwest-middleware = "0.2.2"
reqwest-tracing = "0.4.5"
Expand Down Expand Up @@ -119,7 +119,6 @@ futures = "0.3.28"
http = "0.2.9"
percent-encoding = "2.3.0"
rosetta-i18n = "0.1.3"
rand = "0.8.5"
opentelemetry = { version = "0.19.0", features = ["rt-tokio"] }
tracing-opentelemetry = { version = "0.19.0" }
ts-rs = { version = "6.2", features = ["serde-compat", "chrono-impl"] }
Expand Down Expand Up @@ -167,3 +166,5 @@ tokio-postgres-rustls = { workspace = true }
chrono = { workspace = true }
prometheus = { version = "0.13.3", features = ["process"], optional = true }
actix-web-prom = { version = "0.6.0", optional = true }
clap = { version = "4.3.19", features = ["derive"] }
lemmy_federate = { version = "0.18.1", path = "crates/federate" }
4 changes: 2 additions & 2 deletions api_tests/prepare-drone-federation-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
set -e

export RUST_BACKTRACE=1
export RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"
export RUST_LOG="warn,lemmy_server=debug,lemmy_federate=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"

for INSTANCE in lemmy_alpha lemmy_beta lemmy_gamma lemmy_delta lemmy_epsilon; do
echo "DB URL: ${LEMMY_DATABASE_URL} INSTANCE: $INSTANCE"
Expand All @@ -26,7 +26,7 @@ if [ -z "$DO_WRITE_HOSTS_FILE" ]; then
fi
else
for INSTANCE in lemmy-alpha lemmy-beta lemmy-gamma lemmy-delta lemmy-epsilon; do
echo "127.0.0.1 $INSTANCE" >> /etc/hosts
echo "127.0.0.1 $INSTANCE" >>/etc/hosts
done
fi

Expand Down
1 change: 0 additions & 1 deletion api_tests/run-federation-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
set -e

export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432
export LEMMY_SYNCHRONOUS_FEDERATION=1 # currently this is true in debug by default, but still.
pushd ..
cargo build
rm target/lemmy_server || true
Expand Down
Loading