From: Marco Bettini Date: Tue, 30 Aug 2022 13:00:37 +0000 (+0000) Subject: doveadm: struct dsync_mailbox_tree_sync_ctx - Add event X-Git-Tag: 2.4.0~3571 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3ddb802f3e6faaac4fbeae1b33043bf0046138f4;p=thirdparty%2Fdovecot%2Fcore.git doveadm: struct dsync_mailbox_tree_sync_ctx - Add event --- diff --git a/src/doveadm/dsync/dsync-brain-mailbox-tree.c b/src/doveadm/dsync/dsync-brain-mailbox-tree.c index b529e4b21e..d4c1cc4df2 100644 --- a/src/doveadm/dsync/dsync-brain-mailbox-tree.c +++ b/src/doveadm/dsync/dsync-brain-mailbox-tree.c @@ -405,7 +405,8 @@ static void dsync_brain_mailbox_trees_sync(struct dsync_brain *brain) ctx = dsync_mailbox_trees_sync_init(brain->local_mailbox_tree, brain->remote_mailbox_tree, - sync_type, sync_flags); + sync_type, sync_flags, + brain->event); while ((change = dsync_mailbox_trees_sync_next(ctx)) != NULL) { T_BEGIN { ret = dsync_brain_mailbox_tree_sync_change( diff --git a/src/doveadm/dsync/dsync-mailbox-tree-sync.c b/src/doveadm/dsync/dsync-mailbox-tree-sync.c index e4a50ae1ef..287fed1e6e 100644 --- a/src/doveadm/dsync/dsync-mailbox-tree-sync.c +++ b/src/doveadm/dsync/dsync-mailbox-tree-sync.c @@ -25,6 +25,7 @@ struct dsync_mailbox_tree_bfs_iter { struct dsync_mailbox_tree_sync_ctx { pool_t pool; + struct event *event; struct dsync_mailbox_tree *local_tree, *remote_tree; enum dsync_mailbox_trees_sync_type sync_type; enum dsync_mailbox_trees_sync_flags sync_flags; @@ -1391,7 +1392,8 @@ struct dsync_mailbox_tree_sync_ctx * dsync_mailbox_trees_sync_init(struct dsync_mailbox_tree *local_tree, struct dsync_mailbox_tree *remote_tree, enum dsync_mailbox_trees_sync_type sync_type, - enum dsync_mailbox_trees_sync_flags sync_flags) + enum dsync_mailbox_trees_sync_flags sync_flags, + struct event *parent_event) { struct dsync_mailbox_tree_sync_ctx *ctx; unsigned int rename_counter = 0; @@ -1409,6 +1411,13 @@ dsync_mailbox_trees_sync_init(struct dsync_mailbox_tree *local_tree, ctx->remote_tree = remote_tree; ctx->sync_type = sync_type; ctx->sync_flags = sync_flags; + + bool brain_master = (ctx->sync_flags & DSYNC_MAILBOX_TREES_SYNC_FLAG_MASTER_BRAIN) != 0; + bool force_debug = (ctx->sync_flags & DSYNC_MAILBOX_TREES_SYNC_FLAG_DEBUG) != 0; + ctx->event = event_create(parent_event); + event_set_forced_debug(ctx->event, force_debug); + event_set_append_log_prefix(ctx->event, t_strdup_printf( + "brain %c: ", brain_master ? 'M' : 'S')); i_array_init(&ctx->changes, 128); again: @@ -1468,6 +1477,7 @@ int dsync_mailbox_trees_sync_deinit(struct dsync_mailbox_tree_sync_ctx **_ctx) *_ctx = NULL; array_free(&ctx->changes); + event_unref(&ctx->event); pool_unref(&ctx->pool); return ret; } diff --git a/src/doveadm/dsync/dsync-mailbox-tree.h b/src/doveadm/dsync/dsync-mailbox-tree.h index 69698132ab..f9b2fe941f 100644 --- a/src/doveadm/dsync/dsync-mailbox-tree.h +++ b/src/doveadm/dsync/dsync-mailbox-tree.h @@ -193,7 +193,8 @@ struct dsync_mailbox_tree_sync_ctx * dsync_mailbox_trees_sync_init(struct dsync_mailbox_tree *local_tree, struct dsync_mailbox_tree *remote_tree, enum dsync_mailbox_trees_sync_type sync_type, - enum dsync_mailbox_trees_sync_flags sync_flags); + enum dsync_mailbox_trees_sync_flags sync_flags, + struct event *parent_event); const struct dsync_mailbox_tree_sync_change * dsync_mailbox_trees_sync_next(struct dsync_mailbox_tree_sync_ctx *ctx); int dsync_mailbox_trees_sync_deinit(struct dsync_mailbox_tree_sync_ctx **ctx); diff --git a/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c b/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c index b068137dbb..6b3770812a 100644 --- a/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c +++ b/src/doveadm/dsync/test-dsync-mailbox-tree-sync.c @@ -184,6 +184,8 @@ static void test_trees_nofree(struct dsync_mailbox_tree *tree1, struct dsync_mailbox_tree_sync_ctx *ctx; struct dsync_mailbox_node *dup_node1, *dup_node2; + struct event *event = event_create(NULL); + orig_tree1 = dsync_mailbox_tree_dup(tree1); orig_tree2 = dsync_mailbox_tree_dup(tree2); @@ -192,7 +194,8 @@ static void test_trees_nofree(struct dsync_mailbox_tree *tree1, dsync_mailbox_tree_build_guid_hash(tree2, &dup_node1, &dup_node2); ctx = dsync_mailbox_trees_sync_init(tree1, tree2, DSYNC_MAILBOX_TREES_SYNC_TYPE_TWOWAY, - DSYNC_MAILBOX_TREES_SYNC_FLAG_DEBUG); + DSYNC_MAILBOX_TREES_SYNC_FLAG_DEBUG, + event); while (dsync_mailbox_trees_sync_next(ctx) != NULL) { } dsync_mailbox_trees_sync_deinit(&ctx); @@ -207,7 +210,8 @@ static void test_trees_nofree(struct dsync_mailbox_tree *tree1, dsync_mailbox_tree_build_guid_hash(orig_tree1, &dup_node1, &dup_node2); dsync_mailbox_tree_build_guid_hash(orig_tree2, &dup_node1, &dup_node2); ctx = dsync_mailbox_trees_sync_init(orig_tree2, orig_tree1, - DSYNC_MAILBOX_TREES_SYNC_TYPE_TWOWAY, 0); + DSYNC_MAILBOX_TREES_SYNC_TYPE_TWOWAY, 0, + event); while (dsync_mailbox_trees_sync_next(ctx) != NULL) { } dsync_mailbox_trees_sync_deinit(&ctx); @@ -224,6 +228,8 @@ static void test_trees_nofree(struct dsync_mailbox_tree *tree1, trees_dump(tree1, orig_tree1); } + event_unref(&event); + dsync_mailbox_tree_deinit(_tree2); dsync_mailbox_tree_deinit(&orig_tree1); dsync_mailbox_tree_deinit(&orig_tree2);