Temporarily disable the indexer
authorArt Cancro <ajc@citadel.org>
Tue, 29 Aug 2023 05:37:59 +0000 (01:37 -0400)
committerArt Cancro <ajc@citadel.org>
Tue, 29 Aug 2023 05:37:59 +0000 (01:37 -0400)
citadel/server/backends/berkeley_db/berkeley_db.c
citadel/server/context.c
citadel/server/modules/ctdlproto/serv_rooms.c
citadel/server/modules_init.c
citadel/server/msgbase.c
citadel/server/room_ops.c
citadel/server/sysdep.c
citadel/server/threads.c

index 3e7d2af9002a399378a86161e8377fdc1d85500c..b025f0953c5d90cf5614d700a313fc3ad01772ee 100644 (file)
@@ -255,7 +255,7 @@ void bdb_open_databases(void) {
        bdb_env->set_verbose(bdb_env, DB_VERB_DEADLOCK, 1);
        bdb_env->set_verbose(bdb_env, DB_VERB_RECOVERY, 1);
 
-       flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD;
+       flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD ;
        syslog(LOG_DEBUG, "bdb: bdb_env->open(bdb_env, %s, %d, 0)", ctdl_db_dir, flags);
        ret = bdb_env->open(bdb_env, ctdl_db_dir, flags, 0);                            // try opening the database cleanly
        if (ret) {
@@ -632,10 +632,7 @@ void bdb_tick(void) {
        }
        else if (rejected) {
                syslog(LOG_DEBUG, "bdb: rejected lock %d", rejected);
-               bdb_abort();            // FIXME remove this, we want to unlock, not abort
        }
-
-       syslog(LOG_DEBUG, "bdb: tick...");
 }
 
 
index 280c4f2833f65c6fcfac495753fd4948a57afea5..28815f485c3442ad88a025c50aa86cf2332b2a6d 100644 (file)
@@ -511,8 +511,10 @@ void dead_session_purge(int force) {
        }
        time(&last_purge);
 
-       if (try_critical_section(S_SESSION_TABLE))
-               return;
+       //if (try_critical_section(S_SESSION_TABLE))
+               //return;
+               //
+       begin_critical_section(S_SESSION_TABLE);
                
        ptr = ContextList;
        while (ptr) {
index f8d571d1f97a489f83a2ab08c04d4e72995c2217..a6bd3036ba0557e2d43603dcaf28dfab2209f74f 100644 (file)
@@ -522,8 +522,7 @@ void cmd_setr(char *args) {
        /* Directory room */
        extract_token(buf, args, 2, '|', sizeof buf);
        buf[15] = 0;
-       safestrncpy(CC->room.QRdirname, buf,
-               sizeof CC->room.QRdirname);
+       safestrncpy(CC->room.QRdirname, buf, sizeof CC->room.QRdirname);
 
        /* Default view */
        if (num_parms(args) >= 8) {
@@ -541,16 +540,13 @@ void cmd_setr(char *args) {
         * guess-name or passworded, ensure that the private flag is
         * also set.
         */
-       if ((CC->room.QRflags & QR_GUESSNAME)
-           || (CC->room.QRflags & QR_PASSWORDED))
-               CC->room.QRflags |= QR_PRIVATE;
+       if ((CC->room.QRflags & QR_GUESSNAME) || (CC->room.QRflags & QR_PASSWORDED)) CC->room.QRflags |= QR_PRIVATE;
 
        /* Some changes can't apply to BASEROOM */
        if (!strncasecmp(CC->room.QRname, CtdlGetConfigStr("c_baseroom"), ROOMNAMELEN)) {
                CC->room.QRorder = 0;
                CC->room.QRpasswd[0] = '\0';
-               CC->room.QRflags &= ~(QR_PRIVATE & QR_PASSWORDED &
-                       QR_GUESSNAME & QR_PREFONLY & QR_MAILBOX);
+               CC->room.QRflags &= ~(QR_PRIVATE & QR_PASSWORDED & QR_GUESSNAME & QR_PREFONLY & QR_MAILBOX);
                CC->room.QRflags |= QR_PERMANENT;
        }
        else {  
index d0d240177a9ec368cbf07b895a0bb1fda3a4129b..3f607eb6829c3267a98c8a825cccd4f209248807 100644 (file)
@@ -42,7 +42,7 @@ void initialize_modules(int is_threading) {
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_syscmd());
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_serv_user());
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_expire());
-       syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_fulltext());
+       //syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_fulltext());                // FIXME trying this
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_image());
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_imap());
        syslog(LOG_DEBUG, "extensions: init %s", ctdl_module_init_sieve());
index 22d9d84c5d836eb2934d9d930e059a70cf02e057..1f1671da46fcdbe68e308c20f3cf95bff3892381 100644 (file)
@@ -2211,9 +2211,7 @@ int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newms
        if (num_newmsgs > 1) supplied_msg = NULL;
 
        /* Now the regular stuff */
-       if (CtdlGetRoomLock(&CC->room,
-          ((roomname != NULL) ? roomname : CC->room.QRname) )
-          != 0) {
+       if (CtdlGetRoomLock(&CC->room, ((roomname != NULL) ? roomname : CC->room.QRname) ) != 0) {
                syslog(LOG_ERR, "msgbase: no such room <%s>", roomname);
                return(ERROR + ROOM_NOT_FOUND);
        }
@@ -2247,6 +2245,7 @@ int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newms
        if (msglist == NULL) {
                syslog(LOG_ALERT, "msgbase: ERROR; can't realloc message list!");
                free(msgs_to_be_merged);
+               abort();                                        // FIXME FIXME FOOFOO
                return (ERROR + INTERNAL_ERROR);
        }
        memcpy(&msglist[num_msgs], msgs_to_be_merged, (sizeof(long) * num_msgs_to_be_merged) );
index 301f5987295ca117742880891614b545d2a641a2..5061ed55ef5a7d94c249bb6ff6229acab11e074a 100644 (file)
@@ -341,7 +341,11 @@ int CtdlGetRoom(struct ctdlroom *qrbuf, const char *room_name) {
 int CtdlGetRoomLock(struct ctdlroom *qrbuf, const char *room_name) {
        register int retval;
        retval = CtdlGetRoom(qrbuf, room_name);
-       if (retval == 0) begin_critical_section(S_ROOMS);
+       if (retval == 0) {
+               //syslog(LOG_ERR, "\033[33mCtdlGetRoomLock(%p) requested\033[0m", pthread_self());
+               begin_critical_section(S_ROOMS);
+               //syslog(LOG_ERR, "\033[31mCtdlGetRoomLock(%p) acquired\033[0m", pthread_self());
+       }
        return(retval);
 }
 
@@ -383,6 +387,7 @@ void b_deleteroom(char *room_name) {
 void CtdlPutRoomLock(struct ctdlroom *qrbuf) {
        CtdlPutRoom(qrbuf);
        end_critical_section(S_ROOMS);
+       //syslog(LOG_ERR, "\033[32mCtdlGetRoomLock(%p) released\033[0m", CC);
 }
 
 
index ada01885ffaf769edecb79d86c5726d8e3118fec..cbe62879a06dfd278336acacbd60d22f3ce3aa68 100644 (file)
@@ -986,21 +986,17 @@ SKIP_SELECT:
 
                pthread_mutex_lock(&ThreadCountMutex);
                --active_workers;
-               if (    (active_workers + CtdlGetConfigInt("c_min_workers") < num_workers)
-                       && (num_workers > CtdlGetConfigInt("c_min_workers"))
-               ) {
-                       num_workers--;
-                       pthread_mutex_unlock(&ThreadCountMutex);
-                       return (NULL);
-               }
                pthread_mutex_unlock(&ThreadCountMutex);
        }
 
        // If control reaches this point, the server is shutting down
-       pthread_mutex_lock(&ThreadCountMutex);
-       --num_workers;
-       pthread_mutex_unlock(&ThreadCountMutex);
-       return(NULL);
+       while(1) {
+               sleep(1);               // wait to die
+       }
+       //pthread_mutex_lock(&ThreadCountMutex);
+       //--num_workers;
+       //pthread_mutex_unlock(&ThreadCountMutex);
+       //return(NULL);
 }
 
 
index 0b566c61497d0d37ff83a7e0a934c136e586c3fe..0caa2a7fb0948e2a9f8fcdb7334f272f746ee751 100644 (file)
@@ -60,12 +60,11 @@ void begin_critical_section(int which_one) {
                cdb_check_handles();
        }
 
-       //syslog(LOG_ERR, "\033[3%dm  lock(%14p, %2d, %s)\033[0m", (which_one%6)+1, (CC==&masterCC ? 0 : CC), which_one, locks);
+       //syslog(LOG_ERR, "\033[3%dm  lock(%14p, %2d, %s)\033[0m", (which_one%6)+1, pthread_self(), which_one, locks);
        pthread_mutex_lock(&Critters[which_one]);
-       if (locks[which_one] == 'X') {
-               syslog(LOG_ERR, "\033[7mHOLY SHIT, Thread %p sees double lock %d!!!!111\033[0m", CC, which_one);
-               abort();
-       }
+       //if (locks[which_one] != 'X') {
+               //syslog(LOG_ERR, "\033[31mThread %p had to wait to get a lock on %d\033[0m", pthread_self(), which_one);
+       //}
        locks[which_one] = 'X';
 }
 
@@ -73,7 +72,7 @@ void begin_critical_section(int which_one) {
 // Release a semaphore lock to end a critical section.
 void end_critical_section(int which_one) {
        locks[which_one] = '_';
-       //syslog(LOG_ERR, "\033[3%dmunlock(%14p, %2d, %s)\033[0m", (which_one%6)+1, (CC==&masterCC ? 0 : CC), which_one, locks);
+       //syslog(LOG_ERR, "\033[3%dmunlock(%14p, %2d, %s)\033[0m", (which_one%6)+1, pthread_self(), which_one, locks);
        pthread_mutex_unlock(&Critters[which_one]);
 }