From 0a180b09d6cde251f1067b86790612ffaec36536 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 9 Nov 2023 23:27:10 +0200 Subject: [PATCH] lib-dict: Add dict_transaction_set_non_atomic() --- src/lib-dict/dict-private.h | 1 + src/lib-dict/dict.c | 5 +++++ src/lib-dict/dict.h | 3 +++ 3 files changed, 9 insertions(+) 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. */ -- 2.47.3