From 7796bf39f0f1fe5bea4cde5a426bee872602ca84 Mon Sep 17 00:00:00 2001 From: grunfink Date: Sun, 7 Sep 2025 08:30:18 +0200 Subject: Always do a deferred fsck at startup. --- activitypub.c | 6 ++++++ data.c | 11 +++++++++++ httpd.c | 2 ++ snac.h | 1 + 4 files changed, 20 insertions(+) diff --git a/activitypub.c b/activitypub.c index d699fee..5fb60ba 100644 --- a/activitypub.c +++ b/activitypub.c @@ -3376,6 +3376,12 @@ void process_queue_item(xs_dict *q_item) if (strcmp(type, "rss_hashtag_poll") == 0) { rss_poll_hashtags(); } + else + if (strcmp(type, "fsck") == 0) { + srv_log(xs_fmt("started deferred data integrity check")); + data_fsck(); + srv_log(xs_fmt("finished deferred data integrity check")); + } else srv_log(xs_fmt("unexpected q_item type '%s'", type)); } diff --git a/data.c b/data.c index 8f2c3cb..1533305 100644 --- a/data.c +++ b/data.c @@ -3605,6 +3605,17 @@ void enqueue_collect_outbox(snac *user, const char *actor_id) } +void enqueue_fsck(void) +/* enqueues an fsck */ +{ + xs *qmsg = _new_qmsg("fsck", "", 0); + const char *ntid = xs_dict_get(qmsg, "ntid"); + xs *fn = xs_fmt("%s/queue/%s.json", srv_basedir, ntid); + + qmsg = _enqueue_put(fn, qmsg); +} + + int was_question_voted(snac *user, const char *id) /* returns true if the user voted in this poll */ { diff --git a/httpd.c b/httpd.c index 9707f9c..50f56f2 100644 --- a/httpd.c +++ b/httpd.c @@ -805,6 +805,8 @@ static void *background_thread(void *arg) srv_log(xs_fmt("background thread started")); + enqueue_fsck(); + while (p_state->srv_running) { int cnt = 0; diff --git a/snac.h b/snac.h index dd5cc5f..e344f46 100644 --- a/snac.h +++ b/snac.h @@ -299,6 +299,7 @@ void enqueue_webmention(const xs_dict *msg); void enqueue_notify_webhook(snac *user, const xs_dict *noti, int retries); void enqueue_collect_replies(snac *user, const char *post); void enqueue_collect_outbox(snac *user, const char *actor_id); +void enqueue_fsck(void); int was_question_voted(snac *user, const char *id); -- cgit v1.2.3