Mercurial > dovecot > core-2.2
changeset 21107:8fe5614ccc3c
dict-client: Use io_wait_timer for tracking wait times.
This way the "dict wait" time includes all ioloop waits that wait on the
dict-client, not just in dict_wait().
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Tue, 15 Nov 2016 11:41:53 +0100 |
parents | 97386e9e8c13 |
children | 1a1310a5f7a8 |
files | src/lib-dict/dict-client.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-dict/dict-client.c Tue Nov 15 11:21:56 2016 +0100 +++ b/src/lib-dict/dict-client.c Tue Nov 15 11:41:53 2016 +0100 @@ -72,6 +72,7 @@ char *last_connect_error; struct ioloop *ioloop, *prev_ioloop; + struct io_wait_timer *wait_timer; struct timeout *to_requests; struct timeout *to_idle; unsigned int idle_msecs; @@ -136,7 +137,7 @@ cmd->query = i_strdup(query); cmd->start_time = ioloop_timeval; cmd->start_global_ioloop_usecs = ioloop_global_wait_usecs; - cmd->start_dict_ioloop_usecs = io_loop_get_wait_usecs(dict->ioloop); + cmd->start_dict_ioloop_usecs = io_wait_timer_get_usecs(dict->wait_timer); cmd->start_lock_usecs = file_lock_wait_get_total_usecs(); return cmd; } @@ -661,6 +662,7 @@ dict->uri = i_strdup(dest_uri + 1); dict->ioloop = io_loop_create(); + dict->wait_timer = io_wait_timer_add(); io_loop_set_current(old_ioloop); *dict_r = &dict->dict; return 0; @@ -673,6 +675,7 @@ client_dict_disconnect(dict, "Deinit"); connection_deinit(&dict->conn.conn); + io_wait_timer_remove(&dict->wait_timer); i_assert(dict->transactions == NULL); i_assert(array_count(&dict->cmds) == 0); @@ -715,6 +718,7 @@ { struct client_dict *dict = (struct client_dict *)_dict; + dict->wait_timer = io_wait_timer_move(&dict->wait_timer); if (dict->to_idle != NULL) dict->to_idle = io_loop_move_timeout(&dict->to_idle); if (dict->to_requests != NULL) @@ -727,7 +731,7 @@ { int global_ioloop_msecs = (ioloop_global_wait_usecs - cmd->start_global_ioloop_usecs + 999) / 1000; - int dict_ioloop_msecs = (io_loop_get_wait_usecs(cmd->dict->ioloop) - + int dict_ioloop_msecs = (io_wait_timer_get_usecs(cmd->dict->wait_timer) - cmd->start_dict_ioloop_usecs + 999) / 1000; int other_ioloop_msecs = global_ioloop_msecs - dict_ioloop_msecs; int lock_msecs = (file_lock_wait_get_total_usecs() -