Handling "410 Gone" when retrieving an actor

Sometimes when NodeBB attempts to retrieve a remote user, it will encounter the HTTP status code 410 Gone, which I take to mean that the user has been deleted from the origin server.

I mostly see it from spam accounts that were deleted, but I could potentially see that returned if users manually delete their own accounts.

The easy way forward here would be to see this and immediately delete all content I have locally for that user... all posts we have cached, the local profile, etc.

Downside is it could mean good conversations could suddenly have a hole in them when the account is deleted. We actually circumvent this in NodeBB by not allowing the user to one-click purge all of their content; an administrator is usually involved in the process.

But as always, different implementers might mean different things with 410 Gone, so I hesitate and wonder whether the simple path is the right path...

1 Like

You could do what Reddit does and just leave the posts up but pointing to a tombstone user. If you’ve ever seen a post attributed to [deleted] then you know what I’m talking about.

The problem with that is it possibly (probably¿) violates social expectations around what an account deletion does. Arguably this could be solved by an extension property or type like “DeleteAllCreatedObjects” or whatever. But some implementations might not be able to do that because they don’t keep track of objects by who created them. The other option is to support deleting multiple objects at a time? This stuff is best-effort, though, so it might fail for some of the objects.

1 Like

@trwnh@socialhub.activitypub.rocks said in Handling "410 Gone" when retrieving an actor:

You could do what Reddit does and just leave the posts up but pointing to a tombstone user. If you've ever seen a post attributed to [deleted] then you know what I'm talking about.

Yes, this makes sense. It's coming into clearer focus why account and content deletions are so noisy in ActivityPub, since each deletion of a user's content needs to be federated before the account can be deleted.

In absence of anything more explicit (like your aforementioned DeleteAllCreatedObjects), that's all we have to explicitly signal full account and content deletion.

I think we'll go ahead with that. NodeBB already does display something like [deleted] (we show "A Former User"), and we also save the old user id as a reference in case it needs to be cleaned up.

That'll work, thank you for your input a!

1 Like