aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcebka@lenovo-laptop <cebka@lenovo-laptop>2010-03-17 17:58:31 +0300
committercebka@lenovo-laptop <cebka@lenovo-laptop>2010-03-17 17:58:31 +0300
commit164e887eca4775660e02413193c62bf02dd2b05a (patch)
treec91630bcccf9c6902c0da4b833518f41ee7150b8
parent27d9a41aad8344d40683663313899cf121eb03db (diff)
downloadrspamd-164e887eca4775660e02413193c62bf02dd2b05a.tar.gz
rspamd-164e887eca4775660e02413193c62bf02dd2b05a.zip
* Add statistics for fuzzy storage
-rw-r--r--src/controller.c2
-rw-r--r--src/fuzzy_storage.c9
-rw-r--r--src/main.h2
3 files changed, 13 insertions, 0 deletions
diff --git a/src/controller.c b/src/controller.c
index 4133aad12..64df87d6c 100644
--- a/src/controller.c
+++ b/src/controller.c
@@ -354,6 +354,8 @@ process_stat_command (struct controller_session *session)
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Shared chunks allocated: %ld" CRLF, (long int)mem_st.shared_chunks_allocated);
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Chunks freed: %ld" CRLF, (long int)mem_st.chunks_freed);
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Oversized chunks: %ld" CRLF, (long int)mem_st.oversized_chunks);
+ r += snprintf (out_buf + r, sizeof (out_buf) - r, "Fuzzy hashes stored: %u" CRLF, session->worker->srv->stat->fuzzy_hashes);
+ r += snprintf (out_buf + r, sizeof (out_buf) - r, "Fuzzy hashes expired: %u" CRLF, session->worker->srv->stat->fuzzy_hashes_expired);
/* Now write statistics for each statfile */
cur_cl = g_list_first (session->cfg->classifiers);
while (cur_cl) {
diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c
index c3a29e17f..f6ed7b0d6 100644
--- a/src/fuzzy_storage.c
+++ b/src/fuzzy_storage.c
@@ -60,6 +60,7 @@ static uint32_t mods = 0;
/* For evtimer */
static struct timeval tmv;
static struct event tev;
+static struct rspamd_stat *server_stat;
struct rspamd_fuzzy_node {
int32_t value;
@@ -141,6 +142,8 @@ sync_cache (struct rspamd_worker *wrk)
cur = g_list_next (cur);
g_queue_delete_link (hashes[i], tmp);
bloom_del (bf, node->h.hash_pipe);
+ server_stat->fuzzy_hashes_expired ++;
+ server_stat->fuzzy_hashes --;
g_free (node);
continue;
}
@@ -224,6 +227,7 @@ read_hashes_file (struct rspamd_worker *wrk)
}
g_queue_push_head (hashes[node->h.block_size % BUCKETS], node);
bloom_add (bf, node->h.hash_pipe);
+ server_stat->fuzzy_hashes ++;
}
(void)unlock_file (fd, FALSE);
@@ -314,6 +318,7 @@ process_write_command (struct fuzzy_cmd *cmd)
g_queue_push_head (hashes[cmd->blocksize % BUCKETS], h);
bloom_add (bf, cmd->hash);
mods++;
+ server_stat->fuzzy_hashes ++;
msg_info ("fuzzy hash was successfully added");
return TRUE;
@@ -345,6 +350,7 @@ process_delete_command (struct fuzzy_cmd *cmd)
g_queue_delete_link (hashes[cmd->blocksize % BUCKETS], tmp);
bloom_del (bf, cmd->hash);
msg_info ("fuzzy hash was successfully deleted");
+ server_stat->fuzzy_hashes --;
res = TRUE;
mods++;
continue;
@@ -468,6 +474,8 @@ start_fuzzy_storage (struct rspamd_worker *worker)
event_init ();
+ server_stat = worker->srv->stat;
+
init_signals (&signals, sig_handler);
sigprocmask (SIG_UNBLOCK, &signals.sa_mask, NULL);
@@ -503,6 +511,7 @@ start_fuzzy_storage (struct rspamd_worker *worker)
gperf_profiler_init (worker->srv->cfg, "fuzzy");
+
event_loop (0);
exit (EXIT_SUCCESS);
}
diff --git a/src/main.h b/src/main.h
index 0fffe1518..f79c7cd65 100644
--- a/src/main.h
+++ b/src/main.h
@@ -84,6 +84,8 @@ struct rspamd_stat {
unsigned int connections_count; /**< total connections count */
unsigned int control_connections_count; /**< connections count to control interface */
unsigned int messages_learned; /**< messages learned */
+ unsigned int fuzzy_hashes; /**< number of fuzzy hashes stored */
+ unsigned int fuzzy_hashes_expired; /**< number of fuzzy hashes expired */
};
/**