summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'data.c')
-rw-r--r--data.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/data.c b/data.c
index 8888d4a..9953e90 100644
--- a/data.c
+++ b/data.c
@@ -1642,20 +1642,27 @@ xs_dict *dequeue(const char *fn)
/** the purge **/
-static void _purge_file(const char *fn, time_t mt)
+static int _purge_file(const char *fn, time_t mt)
/* purge fn if it's older than days */
{
+ int ret = 0;
+
if (mtime(fn) < mt) {
/* older than the minimum time: delete it */
unlink(fn);
srv_debug(1, xs_fmt("purged %s", fn));
+ ret = 1;
}
+
+ return ret;
}
static void _purge_subdir(snac *snac, const char *subdir, int days)
/* purges all files in subdir older than days */
{
+ int cnt = 0;
+
if (days) {
time_t mt = time(NULL) - days * 24 * 3600;
xs *spec = xs_fmt("%s/%s/" "*", snac->basedir, subdir);
@@ -1664,8 +1671,10 @@ static void _purge_subdir(snac *snac, const char *subdir, int days)
p = list;
while (xs_list_iter(&p, &v))
- _purge_file(v, mt);
+ cnt += _purge_file(v, mt);
}
+
+ snac_debug(snac, 0, xs_fmt("purge: ~/%s/ %d", subdir, cnt));
}
@@ -1675,6 +1684,7 @@ void purge_server(void)
xs *spec = xs_fmt("%s/object/??", srv_basedir);
xs *dirs = xs_glob(spec, 0, 0);
char *p, *v;
+ int cnt = 0;
time_t mt = time(NULL) - 7 * 24 * 3600;
@@ -1695,9 +1705,12 @@ void purge_server(void)
char *md5 = xs_list_get(l, -1);
object_del_by_md5(md5);
+ cnt++;
}
}
}
+
+ srv_debug(0, xs_fmt("purge: global %d", cnt));
}
@@ -1706,6 +1719,7 @@ void purge_user(snac *snac)
{
int priv_days, pub_days, user_days = 0;
char *v;
+ int n;
priv_days = xs_number_get(xs_dict_get(srv_config, "timeline_purge_days"));
pub_days = xs_number_get(xs_dict_get(srv_config, "local_purge_days"));
@@ -1727,6 +1741,14 @@ void purge_user(snac *snac)
_purge_subdir(snac, "private", priv_days);
_purge_subdir(snac, "public", pub_days);
+
+ const char *idxs[] = { "followers.idx", "private.idx", "public.idx", NULL };
+
+ for (n = 0; idxs[n]; n++) {
+ xs *idx = xs_fmt("%s/%s", snac->basedir, idxs[n]);
+ int gc = index_gc(idx);
+ snac_debug(snac, 0, xs_fmt("purge: %s %d", idx, gc));
+ }
}