From: Timo Sirainen Date: Thu, 9 Nov 2023 21:27:10 +0000 (+0200) Subject: lib-dict: Add dict_transaction_set_non_atomic() X-Git-Tag: 2.4.0~2443 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a180b09d6cde251f1067b86790612ffaec36536;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Add dict_transaction_set_non_atomic() --- diff --git a/src/lib-dict/dict-private.h b/src/lib-dict/dict-private.h index a3e8895598..cfcb2246a1 100644 --- a/src/lib-dict/dict-private.h +++ b/src/lib-dict/dict-private.h @@ -109,6 +109,7 @@ struct dict_transaction_context { const char *error; bool changed:1; + bool non_atomic:1; }; void dict_transaction_commit_async_noop_callback( diff --git a/src/lib-dict/dict.c b/src/lib-dict/dict.c index fba9a4b6d3..a453352067 100644 --- a/src/lib-dict/dict.c +++ b/src/lib-dict/dict.c @@ -616,6 +616,11 @@ void dict_transaction_set_timestamp(struct dict_transaction_context *ctx, } T_END; } +void dict_transaction_set_non_atomic(struct dict_transaction_context *ctx) +{ + ctx->non_atomic = TRUE; +} + struct dict_commit_sync_result { int ret; char *error; diff --git a/src/lib-dict/dict.h b/src/lib-dict/dict.h index 4e7f218d97..18ef56fd84 100644 --- a/src/lib-dict/dict.h +++ b/src/lib-dict/dict.h @@ -178,6 +178,9 @@ dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set); dict-sql with Cassandra backend does anything with this. */ void dict_transaction_set_timestamp(struct dict_transaction_context *ctx, const struct timespec *ts); +/* Don't require changes in transaction to be atomic. It's fine if in a failure + case any set of the changes gets written. */ +void dict_transaction_set_non_atomic(struct dict_transaction_context *ctx); /* Set hide_log_values for the transaction. Currently only dict-sql with Cassandra backend does anything with this. */