On 1/28/25 11:53 AM, Aki Tuomi wrote:
It's maybe https://github.com/dovecot/core/commit/d3a097075afb7b5d8955978ed4a2ae99add11...
That was still giving me occasional crashes. This seems to not crash, but I don't know that it is sensible:
--- a/src/replication/replicator/replicator-queue.c +++ b/src/replication/replicator/replicator-queue.c @@ -286,17 +286,19 @@ replicator_queue_handle_sync_lookups(struct replicator_queue *queue, lookups = array_get_modifiable(&queue->sync_lookups, &count); for (i = 0; i < count; ) { if (lookups[i].user != user) - i++; + { + // Skip user. + } else if (lookups[i].wait_for_next_push) { /* another sync request came while user was being replicated */ i_assert(user->priority == REPLICATION_PRIORITY_SYNC); lookups[i].wait_for_next_push = FALSE; - i++; } else { array_push_back(&callbacks, &lookups[i]); array_delete(&queue->sync_lookups, i, 1); } + i++; }
array_foreach_modifiable(&callbacks, lookups)
Reactions? -kb