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(
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;
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;
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:
*_ctx = NULL;
array_free(&ctx->changes);
+ event_unref(&ctx->event);
pool_unref(&ctx->pool);
return ret;
}
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);
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);
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);
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);
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);