Mercurial > dovecot > core-2.2
changeset 19170:250d85e784d1
fts: Send session ID to indexer and indexer-worker for logging purposes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 21 Sep 2015 17:01:05 +0300 |
parents | f205f3d56093 |
children | 6377910c19e3 |
files | src/indexer/indexer-client.c src/indexer/indexer-queue.c src/indexer/indexer-queue.h src/indexer/master-connection.c src/indexer/worker-connection.c src/plugins/fts/fts-indexer.c src/plugins/fts/fts-storage.c |
diffstat | 7 files changed, 30 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indexer/indexer-client.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/indexer/indexer-client.c Mon Sep 21 17:01:05 2015 +0300 @@ -67,9 +67,10 @@ const char *const *args, const char **error_r) { struct indexer_client_request *ctx = NULL; + const char *session_id = NULL; unsigned int tag, max_recent_msgs; - /* <tag> <user> <mailbox> [<max_recent_msgs>] */ + /* <tag> <user> <mailbox> [<max_recent_msgs> [<session ID>]] */ if (str_array_length(args) < 3) { *error_r = "Wrong parameter count"; return -1; @@ -83,6 +84,8 @@ else if (str_to_uint(args[3], &max_recent_msgs) < 0) { *error_r = "Invalid max_recent_msgs"; return -1; + } else { + session_id = args[4]; } if (tag != 0) { @@ -93,7 +96,7 @@ } indexer_queue_append(client->queue, append, args[1], args[2], - max_recent_msgs, ctx); + session_id, max_recent_msgs, ctx); o_stream_nsend_str(client->output, t_strdup_printf("%u\tOK\n", tag)); return 0; }
--- a/src/indexer/indexer-queue.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/indexer/indexer-queue.c Mon Sep 21 17:01:05 2015 +0300 @@ -82,6 +82,7 @@ static struct indexer_request * indexer_queue_append_request(struct indexer_queue *queue, bool append, const char *username, const char *mailbox, + const char *session_id, unsigned int max_recent_msgs, void *context) { struct indexer_request *request; @@ -91,6 +92,7 @@ request = i_new(struct indexer_request, 1); request->username = i_strdup(username); request->mailbox = i_strdup(mailbox); + request->session_id = i_strdup(session_id); request->max_recent_msgs = max_recent_msgs; request_add_context(request, context); hash_table_insert(queue->requests, request, request); @@ -130,12 +132,14 @@ void indexer_queue_append(struct indexer_queue *queue, bool append, const char *username, const char *mailbox, - unsigned int max_recent_msgs, void *context) + const char *session_id, unsigned int max_recent_msgs, + void *context) { struct indexer_request *request; request = indexer_queue_append_request(queue, append, username, mailbox, - max_recent_msgs, context); + session_id, max_recent_msgs, + context); request->index = TRUE; indexer_queue_append_finish(queue); } @@ -147,7 +151,7 @@ struct indexer_request *request; request = indexer_queue_append_request(queue, TRUE, username, mailbox, - 0, context); + NULL, 0, context); request->optimize = TRUE; indexer_queue_append_finish(queue); }
--- a/src/indexer/indexer-queue.h Mon Sep 21 16:36:05 2015 +0300 +++ b/src/indexer/indexer-queue.h Mon Sep 21 17:01:05 2015 +0300 @@ -8,6 +8,7 @@ char *username; char *mailbox; + char *session_id; unsigned int max_recent_msgs; /* index messages in this mailbox */ @@ -38,7 +39,8 @@ void indexer_queue_append(struct indexer_queue *queue, bool append, const char *username, const char *mailbox, - unsigned int max_recent_msgs, void *context); + const char *session_id, unsigned int max_recent_msgs, + void *context); void indexer_queue_append_optimize(struct indexer_queue *queue, const char *username, const char *mailbox, void *context);
--- a/src/indexer/master-connection.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/indexer/master-connection.c Mon Sep 21 17:01:05 2015 +0300 @@ -201,9 +201,9 @@ unsigned int max_recent_msgs; int ret; - /* <username> <mailbox> <max_recent_msgs> [i][o] */ - if (str_array_length(args) != 4 || - str_to_uint(args[2], &max_recent_msgs) < 0 || args[3][0] == '\0') { + /* <username> <mailbox> <session ID> <max_recent_msgs> [i][o] */ + if (str_array_length(args) != 5 || + str_to_uint(args[3], &max_recent_msgs) < 0 || args[4][0] == '\0') { i_error("Invalid input from master: %s", line); return -1; } @@ -212,6 +212,7 @@ input.module = "mail"; input.service = "indexer-worker"; input.username = args[0]; + input.session_id = args[2][0] == '\0' ? NULL : args[2]; if (mail_storage_service_lookup_next(conn->storage_service, &input, &service_user, &user, &error) <= 0) { @@ -220,7 +221,7 @@ } else { indexer_worker_refresh_proctitle(user->username, args[1], 0, 0); ret = index_mailbox(conn, user, args[1], - max_recent_msgs, args[3]); + max_recent_msgs, args[4]); indexer_worker_refresh_proctitle(NULL, NULL, 0, 0); mail_user_unref(&user); mail_storage_service_user_free(&service_user);
--- a/src/indexer/worker-connection.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/indexer/worker-connection.c Mon Sep 21 17:01:05 2015 +0300 @@ -241,6 +241,9 @@ str_append_tabescaped(str, request->username); str_append_c(str, '\t'); str_append_tabescaped(str, request->mailbox); + str_append_c(str, '\t'); + if (request->session_id != NULL) + str_append_tabescaped(str, request->session_id); str_printfa(str, "\t%u\t", request->max_recent_msgs); if (request->index) str_append_c(str, 'i');
--- a/src/plugins/fts/fts-indexer.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/plugins/fts/fts-indexer.c Mon Sep 21 17:01:05 2015 +0300 @@ -113,9 +113,10 @@ return 0; } - cmd = t_strdup_printf("PREPEND\t1\t%s\t%s\n", + cmd = t_strdup_printf("PREPEND\t1\t%s\t%s\t0\t%s\n", str_tabescape(box->storage->user->username), - str_tabescape(box->vname)); + str_tabescape(box->vname), + str_tabescape(box->storage->user->session_id)); fd = fts_indexer_cmd(box->storage->user, cmd, &path); if (fd == -1) return -1;
--- a/src/plugins/fts/fts-storage.c Mon Sep 21 16:36:05 2015 +0300 +++ b/src/plugins/fts/fts-storage.c Mon Sep 21 17:01:05 2015 +0300 @@ -612,7 +612,10 @@ str_append_tabescaped(str, user->username); str_append_c(str, '\t'); str_append_tabescaped(str, box->vname); - str_printfa(str, "\t%u\n", max_recent_msgs); + str_printfa(str, "\t%u", max_recent_msgs); + str_append_c(str, '\t'); + str_append_tabescaped(str, box->storage->user->session_id); + str_append_c(str, '\n'); if (write_full(fd, str_data(str), str_len(str)) < 0) i_error("write(%s) failed: %m", path); i_close_fd(&fd);