dovecot-2.2: dict-redis: Use timeout_msecs parameter also for tr...

dovecot at dovecot.org dovecot at dovecot.org
Tue Dec 2 08:29:40 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/61b789a5e2c7
changeset: 18122:61b789a5e2c7
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Dec 02 00:29:13 2014 -0800
description:
dict-redis: Use timeout_msecs parameter also for transaction commit waits.

diffstat:

 src/lib-dict/dict-redis.c |  11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diffs (33 lines):

diff -r 668068a45447 -r 61b789a5e2c7 src/lib-dict/dict-redis.c
--- a/src/lib-dict/dict-redis.c	Tue Dec 02 00:26:24 2014 -0800
+++ b/src/lib-dict/dict-redis.c	Tue Dec 02 00:29:13 2014 -0800
@@ -108,18 +108,29 @@
 		io_loop_stop(conn->dict->ioloop);
 }
 
+static void redis_dict_wait_timeout(struct redis_dict *dict)
+{
+	i_error("redis: Commit timed out in %u.%03u secs",
+		dict->timeout_msecs/1000, dict->timeout_msecs%1000);
+	io_loop_stop(dict->ioloop);
+}
+
 static void redis_wait(struct redis_dict *dict)
 {
+	struct timeout *to;
+
 	i_assert(dict->ioloop == NULL);
 
 	dict->prev_ioloop = current_ioloop;
 	dict->ioloop = io_loop_create();
+	to = timeout_add(dict->timeout_msecs, redis_dict_wait_timeout, dict);
 	connection_switch_ioloop(&dict->conn.conn);
 
 	do {
 		io_loop_run(dict->ioloop);
 	} while (array_count(&dict->input_states) > 0);
 
+	timeout_remove(&to);
 	io_loop_set_current(dict->prev_ioloop);
 	connection_switch_ioloop(&dict->conn.conn);
 	io_loop_set_current(dict->ioloop);


More information about the dovecot-cvs mailing list