]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
indexer: Don't die on "idle kill signal" if workers are still busy.
authorTimo Sirainen <tss@iki.fi>
Sun, 14 Aug 2011 18:02:43 +0000 (21:02 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 14 Aug 2011 18:02:43 +0000 (21:02 +0300)
src/indexer/indexer.c
src/indexer/worker-pool.c
src/indexer/worker-pool.h

index 3401c38b97bf829aeb054ace8bedc5b1555bccae..166e75c49fb5ace451564c4f39d0ecada63505cb 100644 (file)
@@ -31,7 +31,8 @@ void indexer_refresh_proctitle(void)
 
 static bool idle_die(void)
 {
-       return indexer_queue_is_empty(queue);
+       return indexer_queue_is_empty(queue) &&
+               !worker_pool_have_busy_connections(worker_pool);
 }
 
 static void client_connected(struct master_service_connection *conn)
index aa20e749e50d9e2b14d5a6d0eb54f365f1452b01..2d31e655864742971025963cc3517b7caca19633 100644 (file)
@@ -61,6 +61,11 @@ void worker_pool_deinit(struct worker_pool **_pool)
        i_free(pool);
 }
 
+bool worker_pool_have_busy_connections(struct worker_pool *pool)
+{
+       return pool->busy_list != NULL;
+}
+
 static int worker_pool_add_connection(struct worker_pool *pool)
 {
        struct worker_connection *conn;
index fcd4c2193bd2b80f178ae01f27391738137a2de4..80ec4b0bc0a090dbe100526e3c9a545853916121 100644 (file)
@@ -9,6 +9,8 @@ struct worker_pool *
 worker_pool_init(const char *socket_path, indexer_status_callback_t *callback);
 void worker_pool_deinit(struct worker_pool **pool);
 
+bool worker_pool_have_busy_connections(struct worker_pool *pool);
+
 bool worker_pool_get_connection(struct worker_pool *pool,
                                struct worker_connection **conn_r);
 void worker_pool_release_connection(struct worker_pool *pool,