this post was submitted on 03 Jul 2023
17 points (100.0% liked)

Feddit UK

1352 readers
1 users here now

Community for the Feddit UK instance.
A place to log issues, and for the admins to communicate with everyone.

founded 1 year ago
MODERATORS
 

If I visit a community from Feddit and then another instance, the comments often differ. I understand there are some issues with defederation between some instances, but this doesn't seem related to that.

For example, here's the post-race discussion on the Formula 1 community on Feddit: https://feddit.uk/post/320484

And then the same discussion on lemmy.world: https://lemmy.world/post/950479

I don't understand why a significant number of comments aren't visible on Feddit.

you are viewing a single comment's thread
view the rest of the comments
[–] blackn1ght 2 points 1 year ago (1 children)

Seems like the events should get pushed onto a queue so that if the instance is overloaded or down, the events aren't lost.

[–] db0@lemmy.dbzer0.com 2 points 1 year ago (1 children)

The problem is in the way ActivityPub works. The events are pushed into the queue, but if the receiving system takes too long to process it, there's a datetime "expiry"

[–] blackn1ght 1 points 1 year ago (1 children)

Ah, I'm totally unfamiliar with ActivityPub (never even heard of it until now!). Is the expiry time of the messages totally uncontrollable by Lemmy then?

[–] db0@lemmy.dbzer0.com 2 points 1 year ago (1 children)

No, It's part of the ActivityPub protocol definition

[–] spacedogroy 1 points 1 year ago (1 children)

I had a look at the ActivityPub W3C and I noticed the following paragraph:

For federated servers performing delivery to a third party server, delivery SHOULD be performed asynchronously, and SHOULD additionally retry delivery to recipients if it fails due to network error.

In this context is 3rd party server a federated server? I couldn't see where expiry came in but presumably if the pushes are async then the server sending the payload won't know if it succeeded or not (unless there's some other mechanism to verify message acknowledgment).

[–] db0@lemmy.dbzer0.com 3 points 1 year ago* (last edited 1 year ago)

The async doesn't mean if the sending server doesn't know. It's not using UDP lol :) It will retry until it gets a RC 200 or 201. Then stop sending. The asynchronous part is that the receiving instance doesn't have to import the event into the DB immediately. The received event sits in a special "to import" queue until processed. Each event has a timestamp attached to it. If it takes too long to process the event in the queue, because the receiving server is overloaded, then its timestamp may be considered expired.

E.g. from https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/

Mind that there is only a ±30 seconds time window when that signature would be considered valid, which is a big reason why it’s quite difficult to do manually.