Mercurial > dovecot > core-2.2
changeset 20668:44c049b65011
lib-dict: Added dict_transaction_no_slowness_warning()
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 15 Aug 2016 23:40:59 +0300 |
parents | af50b2cdc40c |
children | 7225abbbc344 |
files | src/lib-dict/dict-client.c src/lib-dict/dict-private.h src/lib-dict/dict.c src/lib-dict/dict.h |
diffstat | 4 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-dict/dict-client.c Mon Aug 15 23:36:13 2016 +0300 +++ b/src/lib-dict/dict-client.c Mon Aug 15 23:40:59 2016 +0300 @@ -1045,6 +1045,7 @@ } if (ret >= 0 && !cmd->background && + !cmd->trans->ctx.no_slowness_warning && diff >= DICT_CLIENT_REQUEST_WARN_TIMEOUT_MSECS) { i_warning("read(%s): dict commit took %u.%03u seconds: " "%s (%u commands, first: %s)",
--- a/src/lib-dict/dict-private.h Mon Aug 15 23:36:13 2016 +0300 +++ b/src/lib-dict/dict-private.h Mon Aug 15 23:40:59 2016 +0300 @@ -60,6 +60,7 @@ struct dict *dict; unsigned int changed:1; + unsigned int no_slowness_warning:1; }; extern struct dict dict_driver_client;
--- a/src/lib-dict/dict.c Mon Aug 15 23:36:13 2016 +0300 +++ b/src/lib-dict/dict.c Mon Aug 15 23:40:59 2016 +0300 @@ -206,6 +206,11 @@ return dict->v.transaction_init(dict); } +void dict_transaction_no_slowness_warning(struct dict_transaction_context *ctx) +{ + ctx->no_slowness_warning = TRUE; +} + int dict_transaction_commit(struct dict_transaction_context **_ctx) { struct dict_transaction_context *ctx = *_ctx;
--- a/src/lib-dict/dict.h Mon Aug 15 23:36:13 2016 +0300 +++ b/src/lib-dict/dict.h Mon Aug 15 23:40:59 2016 +0300 @@ -118,6 +118,11 @@ /* Start a new dictionary transaction. */ struct dict_transaction_context *dict_transaction_begin(struct dict *dict); +/* Don't log a warning if the transaction commit took a long time. + This is needed if there are no guarantees that an asynchronous commit will + finish up anytime soon. Mainly useful for transactions which aren't + especially important whether they finish or not. */ +void dict_transaction_no_slowness_warning(struct dict_transaction_context *ctx); /* Commit the transaction. Returns 1 if ok, 0 if dict_atomic_inc() was used on a nonexistent key, -1 if failed. */ int dict_transaction_commit(struct dict_transaction_context **ctx);