commit 7796bf3

grunfink  ·  2025-09-07 06:30:18 +0000 UTC
parent ef701e8
Always do a deferred fsck at startup.
4 files changed,  +20, -0
M data.c
M snac.h
+6, -0
 1@@ -3376,6 +3376,12 @@ void process_queue_item(xs_dict *q_item)
 2     if (strcmp(type, "rss_hashtag_poll") == 0) {
 3         rss_poll_hashtags();
 4     }
 5+    else
 6+    if (strcmp(type, "fsck") == 0) {
 7+        srv_log(xs_fmt("started deferred data integrity check"));
 8+        data_fsck();
 9+        srv_log(xs_fmt("finished deferred data integrity check"));
10+    }
11     else
12         srv_log(xs_fmt("unexpected q_item type '%s'", type));
13 }
M data.c
+11, -0
 1@@ -3605,6 +3605,17 @@ void enqueue_collect_outbox(snac *user, const char *actor_id)
 2 }
 3 
 4 
 5+void enqueue_fsck(void)
 6+/* enqueues an fsck */
 7+{
 8+    xs *qmsg   = _new_qmsg("fsck", "", 0);
 9+    const char *ntid = xs_dict_get(qmsg, "ntid");
10+    xs *fn     = xs_fmt("%s/queue/%s.json", srv_basedir, ntid);
11+
12+    qmsg = _enqueue_put(fn, qmsg);
13+}
14+
15+
16 int was_question_voted(snac *user, const char *id)
17 /* returns true if the user voted in this poll */
18 {
+2, -0
1@@ -805,6 +805,8 @@ static void *background_thread(void *arg)
2 
3     srv_log(xs_fmt("background thread started"));
4 
5+    enqueue_fsck();
6+
7     while (p_state->srv_running) {
8         int cnt = 0;
9 
M snac.h
+1, -0
1@@ -299,6 +299,7 @@ void enqueue_webmention(const xs_dict *msg);
2 void enqueue_notify_webhook(snac *user, const xs_dict *noti, int retries);
3 void enqueue_collect_replies(snac *user, const char *post);
4 void enqueue_collect_outbox(snac *user, const char *actor_id);
5+void enqueue_fsck(void);
6 
7 int was_question_voted(snac *user, const char *id);
8