Aggressively sync
authorArt Cancro <ajc@citadel.org>
Sat, 22 Jul 2023 16:24:05 +0000 (07:24 -0900)
committerArt Cancro <ajc@citadel.org>
Sat, 22 Jul 2023 16:24:05 +0000 (07:24 -0900)
citadel/server/database.c

index 2085dc72971bdf03949e846f1675565b7a52d698..cb5adafca46246a38ac1c036a240028034e72423 100644 (file)
@@ -296,6 +296,12 @@ void close_databases(void) {
        int i;
        int ret;
 
+       static int closing = 0;
+       while (closing == 1) {
+               syslog(LOG_INFO, "db: already closing");
+       }
+       closing = 1;
+
        syslog(LOG_INFO, "db: performing final checkpoint");
        if ((ret = dbenv->txn_checkpoint(dbenv, 0, 0, 0))) {
                syslog(LOG_ERR, "db: txn_checkpoint: %s", db_strerror(ret));
@@ -314,16 +320,10 @@ void close_databases(void) {
                if (ret) {
                        syslog(LOG_ERR, "db: db_close: %s", db_strerror(ret));
                }
-
        }
 
-       // This seemed nifty at the time but did anyone really look at it?
-       // #ifdef DB_STAT_ALL
-       // dbenv->lock_stat_print(dbenv, DB_STAT_ALL);
-       // #endif
-
        // Close the handle.
-       ret = dbenv->close(dbenv, 0);
+       ret = dbenv->close(dbenv, DB_FORCESYNC);
        if (ret) {
                syslog(LOG_ERR, "db: DBENV->close: %s", db_strerror(ret));
        }