Inbox processing throws an error on Add(Hashtag), Remove(Hashtag), and probably others
What happened?
AP inbox processing assumes that an actor's featured collection must contain only notes. Mastodon, however, allows users to feature Hashtags. When a remote actor removes a hashtag from their featured collection, Sharkey attempts to resolve the tag as a note, eventually ending with an exception thrown from getApId()
. This has been confirmed to happen with Add(Hashtag) and Remove(Hashtag), but probably happens with other collection activities as well.
An example error:
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ERR * [queue inbox] failed(Error: cannot detemine id) id=2574345 attempts=5/8 age=28m activity=undefined {
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: job: {
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: name: undefined,
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: info: 'id=2574345 attempts=5/8 age=28m',
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: failedReason: 'cannot detemine id',
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: data: { activity: [Object], signature: [Object] }
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: },
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: e: {
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: stack: 'Error: cannot detemine id\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at getApId (file:///home/calckey/calckey/packages/backend/built/core/activitypub/type.js:24:11)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at ApNoteService.resolveNote (file:///home/calckey/calckey/packages/backend/built/core/activitypub/models/ApNoteService.js:514:21)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at ApInboxService.remove (file:///home/calckey/calckey/packages/backend/built/core/activitypub/ApInboxService.js:532:51)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at ApInboxService.performOneActivity (file:///home/calckey/calckey/packages/backend/built/core/activitypub/ApInboxService.js:167:31)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at ApInboxService.performActivity (file:///home/calckey/calckey/packages/backend/built/core/activitypub/ApInboxService.js:138:33)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at InboxProcessorService.process (file:///home/calckey/calckey/packages/backend/built/queue/processors/InboxProcessorService.js:190:54)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at async Worker.processJob (/home/calckey/calckey/node_modules/.pnpm/bullmq@5.10.4/node_modules/bullmq/dist/cjs/classes/worker.js:445:28)\n' +
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: ' at async Worker.retryIfFailed (/home/calckey/calckey/node_modules/.pnpm/bullmq@5.10.4/node_modules/bullmq/dist/cjs/classes/worker.js:634:24)',
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: message: 'cannot detemine id',
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: name: 'Error'
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: }
Oct 15 18:33:57 vps-426b63f4 "enby.life@worker"[1289493]: }
An example Activity:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
{
"Hashtag": "as:Hashtag"
}
],
"type": "Remove",
"actor": "https://lgbtqia.space/users/alice",
"target": "https://lgbtqia.space/users/alice/collections/featured",
"object": {
"type": "Hashtag",
"href": "https://lgbtqia.space/@alice/tagged/lgbtqia",
"name": "#lgbtqia"
}
}
What did you expect to happen?
Given that Sharkey does not support featured hashtags, the activity should have been ignored without an exception.
Version
2024.9.0-dev
Instance
enby.life
What type of issue is this?
backend
How do you deploy Sharkey on your server? (Server-side issues only)
Build from source
What operating system are you using? (Server-side issues only)
Ubuntu Server
Contribution Guidelines By submitting this issue, you agree to follow our Contribution Guidelines
-
I agree to follow this project's Contribution Guidelines -
I have searched the issue tracker for similar issues, and this is not a duplicate.