]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/expire/serv_expire.c
Run db->compact() to shrink DB files on disk after an auto-purger run, only if the...
[citadel.git] / citadel / modules / expire / serv_expire.c
index 94999b9d71eba4bbdb61838034109560a57693ad..e9d52264744d42e9380dbf3ab504b687ddaa895c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * You might also see this module affectionately referred to as the DAP (the Dreaded Auto-Purger).
  *
- * Copyright (c) 1988-2015 by citadel.org (Art Cancro, Wilifried Goesgens, and others)
+ * Copyright (c) 1988-2017 by citadel.org (Art Cancro, Wilifried Goesgens, and others)
  *
  * This program is open source software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as published
@@ -102,7 +102,6 @@ struct ValidUser {
        long vu_usernum;
 };
 
-
 struct ctdlroomref {
        struct ctdlroomref *next;
        long msgnum;
@@ -176,7 +175,6 @@ void GatherPurgeMessages(struct ctdlroom *qrbuf, void *data) {
                return;
        }
 
-
        /* If the room is set to expire by count, do that */
        if (epbuf.expire_mode == EXPIRE_NUMMSGS) {
                if (num_msgs > epbuf.expire_value) {
@@ -327,7 +325,6 @@ void DoPurgeRooms(struct ctdlroom *qrbuf, void *data) {
 }
 
 
-
 int PurgeRooms(void) {
        struct PurgeList *pptr;
        int num_rooms_purged = 0;
@@ -337,7 +334,6 @@ int PurgeRooms(void) {
 
        syslog(LOG_DEBUG, "PurgeRooms() called");
 
-
        /* Load up a table full of valid user numbers so we can delete
         * user-owned rooms for users who no longer exist */
        ForEachUser(AddValidUser, NULL);
@@ -352,7 +348,6 @@ int PurgeRooms(void) {
                ValidUserList = vuptr;
        }
 
-
        transcript = malloc(SIZ);
        strcpy(transcript, "The following rooms have been auto-purged:\n");
 
@@ -399,8 +394,6 @@ void do_uid_user_purge(struct ctdluser *us, void *data) {
 }
 
 
-
-
 /*
  * Back end function to check user accounts for expiration.
  */
@@ -514,7 +507,6 @@ void do_user_purge(struct ctdluser *us, void *data) {
 }
 
 
-
 int PurgeUsers(void) {
        struct PurgeList *pptr;
        int num_users_purged = 0;
@@ -684,6 +676,7 @@ int PurgeVisits(void) {
        return(purged);
 }
 
+
 /*
  * Purge the use table of old entries.
  *
@@ -696,11 +689,6 @@ int PurgeUseTable(StrBuf *ErrMsg) {
        struct UPurgeList *uptr; 
 
        /* Phase 1: traverse through the table, discovering old records... */
-       if (CheckTDAPVeto(CDB_USETABLE, ErrMsg))
-       {
-               syslog(LOG_DEBUG, "Purge use table: VETO!");
-               return 0;
-       }
 
        syslog(LOG_DEBUG, "Purge use table: phase 1");
        cdb_rewind(CDB_USETABLE);
@@ -715,8 +703,6 @@ int PurgeUseTable(StrBuf *ErrMsg) {
                }
                cdb_free(cdbut);
 
-               syslog(LOG_DEBUG, "UT: [%s] at %s", ut.ut_msgid, asctime(localtime(&ut.ut_timestamp))); // FIXME take this out ajc
-
                if ( (time(NULL) - ut.ut_timestamp) > USETABLE_RETAIN )
                {
                        uptr = (struct UPurgeList *) malloc(sizeof(struct UPurgeList));
@@ -745,7 +731,6 @@ int PurgeUseTable(StrBuf *ErrMsg) {
 }
 
 
-
 /*
  * Purge the EUID Index of old records.
  *
@@ -800,7 +785,6 @@ int PurgeEuidIndexTable(void) {
 }
 
 
-
 /*
  * Purge OpenID assocations for missing users (theoretically this will never delete anything)
  */
@@ -848,9 +832,6 @@ int PurgeStaleOpenIDassociations(void) {
 }
 
 
-
-
-
 void purge_databases(void)
 {
        int retval;
@@ -924,10 +905,15 @@ void purge_databases(void)
                syslog(LOG_NOTICE, "Processed %d message reference count adjustments.", retval);
        }
 
+       if ( (!server_shutting_down) && (CtdlGetConfigInt("c_shrink_db_files") != 0) )
+       {
+               cdb_compact();                                  // Shrink the DB files on disk
+       }
+
        if (!server_shutting_down)
        {
                syslog(LOG_INFO, "Auto-purger: finished.");
-               last_purge = now;       /* So we don't do it again soon */
+               last_purge = now;                               // So we don't do it again soon
                force_purge_now = 0;
        }
        else {
@@ -946,7 +932,6 @@ void cmd_tdap(char *argbuf) {
 }
 
 
-
 CTDL_MODULE_INIT(expire)
 {
        if (!threading)