added more diagnostic messages to mmnext sanity checks
authorArt Cancro <ajc@citadel.org>
Wed, 8 Aug 2018 14:05:16 +0000 (10:05 -0400)
committerArt Cancro <ajc@citadel.org>
Wed, 8 Aug 2018 14:05:16 +0000 (10:05 -0400)
citadel/control.c
citadel/database.c
citadel/modules/ctdlproto/serv_syscmds.c

index b79689b08e12d68a5c27dc3209fc977fbb8a14f1..ff4c0ea80224f4fc003738b5af5df956f49b41f4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This module handles states which are global to the entire server.
  *
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2018 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 3.
@@ -50,16 +50,13 @@ void control_find_highest(struct ctdlroom *qrbuf, void *data)
        long *msglist;
        int num_msgs=0;
        int c;
-       int room_fixed = 0;
-       int message_fixed = 0;
        
-       if (qrbuf->QRnumber > CtdlGetConfigLong("MMnextroom"))
-       {
+       if (qrbuf->QRnumber > CtdlGetConfigLong("MMnextroom")) {
+               syslog(LOG_DEBUG, "control: fixing MMnextroom %ld > %ld", qrbuf->QRnumber, CtdlGetConfigLong("MMnextroom"));
                CtdlSetConfigLong("MMnextroom", qrbuf->QRnumber);
-               room_fixed = 1;
        }
                
-       CtdlGetRoom (&room, qrbuf->QRname);
+       CtdlGetRoom(&room, qrbuf->QRname);
        
        /* Load the message list */
        cdbfr = cdb_fetch(CDB_MSGLISTS, &room.QRnumber, sizeof(long));
@@ -70,24 +67,15 @@ void control_find_highest(struct ctdlroom *qrbuf, void *data)
                return; /* No messages at all?  No further action. */
        }
 
-       if (num_msgs>0)
-       {
-               for (c=0; c<num_msgs; c++)
-               {
-                       if (msglist[c] > CtdlGetConfigLong("MMhighest"))
-                       {
+       if (num_msgs > 0) {
+               for (c=0; c<num_msgs; c++) {
+                       if (msglist[c] > CtdlGetConfigLong("MMhighest")) {
+                               syslog(LOG_DEBUG, "control: fixing MMhighest %ld > %ld", msglist[c], CtdlGetConfigLong("MMhighest"));
                                CtdlSetConfigLong("MMhighest", msglist[c]);
-                               message_fixed = 1;
                        }
                }
        }
        cdb_free(cdbfr);
-       if (room_fixed) {
-               syslog(LOG_INFO, "control: fixed room counter");
-       }
-       if (message_fixed) {
-               syslog(LOG_INFO, "control: fixed message count");
-       }
        return;
 }
 
@@ -95,18 +83,12 @@ void control_find_highest(struct ctdlroom *qrbuf, void *data)
 /*
  * Callback to get highest user number.
  */
-void control_find_user (struct ctdluser *EachUser, void *out_data)
+void control_find_user(struct ctdluser *EachUser, void *out_data)
 {
-       int user_fixed = 0;
-       
-       if (EachUser->usernum > CtdlGetConfigLong("MMnextuser"))
-       {
+       if (EachUser->usernum > CtdlGetConfigLong("MMnextuser")) {
+               syslog(LOG_DEBUG, "control: fixing MMnextuser %ld > %ld", EachUser->usernum, CtdlGetConfigLong("MMnextuser"));
                CtdlSetConfigLong("MMnextuser", EachUser->usernum);
-               user_fixed = 1;
        }
-       if(user_fixed)
-               syslog(LOG_INFO, "control: fixed user count");
 }
 
 
@@ -147,9 +129,11 @@ void migrate_legacy_control_record(void)
  */
 void check_control(void)
 {
-       syslog(LOG_INFO, "control: sanity checking the recorded highest message, user, and room numbers");
+       syslog(LOG_INFO, "control: sanity checking the recorded highest message and room numbers");
        CtdlForEachRoom(control_find_highest, NULL);
+       syslog(LOG_INFO, "control: sanity checking the recorded highest user number");
        ForEachUser(control_find_user, NULL);
+       syslog(LOG_INFO, "control: sanity checks complete");
 }
 
 
index 9a22c8d2c62a6ca7af9c819fdb879946db3b2db4..2e80b599df74cb0a2a95393b05468326eeff8f95 100644 (file)
@@ -163,48 +163,6 @@ void cdb_check_handles(void)
 }
 
 
-/*
- * Cull the database logs by removing log files that are no longer needed.
- * Note: this code will be removed once we are confident that Berkeley DB can do this on its own.
- */
-void cdb_cull_logs(void)
-{
-#ifndef DB_LOG_AUTO_REMOVE
-       u_int32_t flags;
-       int ret;
-       char **file, **list;
-       char errmsg[SIZ];
-
-       flags = DB_ARCH_ABS;
-
-       /* Get the list of names. */
-       if ((ret = dbenv->log_archive(dbenv, &list, flags)) != 0) {
-               syslog(LOG_ERR, "db: cdb_cull_logs() %s", db_strerror(ret));
-               return;
-       }
-
-       /* Print the list of names. */
-       if (list != NULL) {
-               for (file = list; *file != NULL; ++file) {
-                       syslog(LOG_DEBUG, "db: deleting log %s", *file);
-                       ret = unlink(*file);
-                       if (ret != 0) {
-                               snprintf(errmsg, sizeof(errmsg),
-                                        " ** ERROR **\n \n \n "
-                                        "Citadel was unable to delete the "
-                                        "database log file '%s' because of the "
-                                        "following error:\n \n %s\n \n"
-                                        " This log file is no longer in use "
-                                        "and may be safely deleted.\n", *file, strerror(errno));
-                               CtdlAideMessage(errmsg, "Database Warning Message");
-                       }
-               }
-               free(list);
-       }
-#endif /* DB_LOG_AUTO_REMOVE */
-}
-
-
 /*
  * Request a checkpoint of the database.  Called once per minute by the thread manager.
  */
@@ -222,18 +180,11 @@ void cdb_checkpoint(void)
 
        /* After a successful checkpoint, we can cull the unused logs */
        if (CtdlGetConfigInt("c_auto_cull")) {
-#ifdef DB_LOG_AUTO_REMOVE
-               // This version of Berkeley DB can cull the logs on its own!
                ret = dbenv->log_set_config(dbenv, DB_LOG_AUTO_REMOVE, 1);
-#else
-               cdb_cull_logs();        // Citadel knows how to do it too.
-#endif
        }
-#ifdef DB_LOG_AUTO_REMOVE
        else {
                ret = dbenv->log_set_config(dbenv, DB_LOG_AUTO_REMOVE, 0);
        }
-#endif
 }
 
 
index 9a11deca6c3aa3b0c641952cc6e5d7fe7dc31a21..013e1408902aa9aef626a50ceed29f86347eb26a 100644 (file)
@@ -2,7 +2,7 @@
 /* 
  * Main source module for the Citadel server
  *
- * Copyright (c) 1987-2017 by the citadel.org team
+ * Copyright (c) 1987-2018 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License, version 3.
@@ -98,16 +98,6 @@ void cmd_scdn(char *argbuf)
        cprintf(Reply, state, ScheduledShutdown);
 }
 
-/*
- * Manually initiate log file cull.
- */
-void cmd_cull(char *argbuf) {
-       if (CtdlAccessCheck(ac_internal)) return;
-       cdb_cull_logs();
-       cprintf("%d Database log file cull completed.\n", CIT_OK);
-}
-
-
 
 /*****************************************************************************/
 /*                      MODULE INITIALIZATION STUFF                          */
@@ -119,7 +109,6 @@ CTDL_MODULE_INIT(syscmd)
                CtdlRegisterProtoHook(cmd_down, "DOWN", "perform a server shutdown");
                CtdlRegisterProtoHook(cmd_halt, "HALT", "halt the server without exiting the server process");
                CtdlRegisterProtoHook(cmd_scdn, "SCDN", "schedule or cancel a server shutdown");
-               CtdlRegisterProtoHook(cmd_cull, "CULL", "Cull database logs");
        }
         /* return our id for the Log */
        return "syscmd";