feat(federation): Add config option to control automatic queue purge time

This commit is contained in:
Jesse Wierzbinski 2024-11-25 13:53:14 +01:00
parent 048dd6b0ab
commit 61b773ed11
No known key found for this signature in database
4 changed files with 132 additions and 2 deletions

View file

@ -259,6 +259,21 @@ language = "en"
# A style name from https://www.dicebear.com/styles
placeholder_style = "thumbs"
[queues]
# Control the delivery queue (for outbound federation)
[queues.delivery]
# Time in seconds to remove completed jobs
remove_on_complete = 31536000
# Time in seconds to remove failed jobs
remove_on_failure = 31536000
# Control the inbox processing queue (for inbound federation)
[queues.inbox]
# Time in seconds to remove completed jobs
remove_on_complete = 31536000
# Time in seconds to remove failed jobs
remove_on_failure = 31536000
[federation]
# This is a list of domain names, such as "mastodon.social" or "pleroma.site"
# These changes will not retroactively apply to existing data before they were changed

View file

@ -3298,6 +3298,58 @@
}
}
},
"queues": {
"type": "object",
"properties": {
"delivery": {
"type": "object",
"properties": {
"remove_on_complete": {
"type": "integer",
"default": 31536000
},
"remove_on_failure": {
"type": "integer",
"default": 31536000
}
},
"additionalProperties": false,
"default": {
"remove_on_complete": 31536000,
"remove_on_failure": 31536000
}
},
"inbox": {
"type": "object",
"properties": {
"remove_on_complete": {
"type": "integer",
"default": 31536000
},
"remove_on_failure": {
"type": "integer",
"default": 31536000
}
},
"additionalProperties": false,
"default": {
"remove_on_complete": 31536000,
"remove_on_failure": 31536000
}
}
},
"additionalProperties": false,
"default": {
"delivery": {
"remove_on_complete": 31536000,
"remove_on_failure": 31536000
},
"inbox": {
"remove_on_complete": 31536000,
"remove_on_failure": 31536000
}
}
},
"instance": {
"type": "object",
"properties": {

View file

@ -525,6 +525,53 @@ export const configValidator = z
token: "",
},
}),
queues: z
.object({
delivery: z
.object({
remove_on_complete: z
.number()
.int()
// 1 year
.default(60 * 60 * 24 * 365),
remove_on_failure: z
.number()
.int()
// 1 year
.default(60 * 60 * 24 * 365),
})
.default({
remove_on_complete: 60 * 60 * 24 * 365,
remove_on_failure: 60 * 60 * 24 * 365,
}),
inbox: z
.object({
remove_on_complete: z
.number()
.int()
// 1 year
.default(60 * 60 * 24 * 365),
remove_on_failure: z
.number()
.int()
// 1 year
.default(60 * 60 * 24 * 365),
})
.default({
remove_on_complete: 60 * 60 * 24 * 365,
remove_on_failure: 60 * 60 * 24 * 365,
}),
})
.default({
delivery: {
remove_on_complete: 60 * 60 * 24 * 365,
remove_on_failure: 60 * 60 * 24 * 365,
},
inbox: {
remove_on_complete: 60 * 60 * 24 * 365,
remove_on_failure: 60 * 60 * 24 * 365,
},
}),
instance: z
.object({
name: z.string().min(1).default("Versia"),

View file

@ -104,7 +104,15 @@ export const deliveryWorker = new Worker<
}
}
},
{ connection },
{
connection,
removeOnComplete: {
age: config.queues.delivery.remove_on_complete,
},
removeOnFail: {
age: config.queues.delivery.remove_on_failure,
},
},
);
export const inboxWorker = new Worker<InboxJobData, Response, InboxJobType>(
@ -242,5 +250,13 @@ export const inboxWorker = new Worker<InboxJobData, Response, InboxJobType>(
}
}
},
{ connection, removeOnComplete: { count: 0 } },
{
connection,
removeOnComplete: {
age: config.queues.inbox.remove_on_complete,
},
removeOnFail: {
age: config.queues.inbox.remove_on_failure,
},
},
);