]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dict: Add dict_transaction_set_non_atomic()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Nov 2023 21:27:10 +0000 (23:27 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 10 Nov 2023 16:48:25 +0000 (16:48 +0000)
src/lib-dict/dict-private.h
src/lib-dict/dict.c
src/lib-dict/dict.h

index a3e8895598ee73465084f67199f778380d2855ea..cfcb2246a115d89ac6e11429ae97a2de3b12498b 100644 (file)
@@ -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(
index fba9a4b6d3dd5a06031cec5fc6074e787abea328..a453352067bc12e1c48cf65b27506f998d1557d5 100644 (file)
@@ -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;
index 4e7f218d975711e58572db1c95a6efa36af6c412..18ef56fd84a729b9db51ff46d5b99115d67f2c02 100644 (file)
@@ -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. */