[Dovecot] dsync duplicates messages/crashed if a 'large' number of messages has been deleted
Hi,
I try to mirror two dovecots with:
dsync -v -f -u login mirror ssh -o IdentityFile=/etc/dovecot/dsync.d/id_rsa root@shrike dsync -u login
This usually works, but if I delete a certain number of emails, I get this messages:
dsync-local(mailverwalter): Info: Posteingang: Ignored 178 modseq changes dsync-local(mailverwalter): Info: Posteingang: Couldn't keep all uids dsync-local(mailverwalter): Warning: Mailbox changes caused a desync. You may want to run dsync again.
after a second try I get:
dsync-local(mailverwalter): Panic: dsync brain state=10 dsync-local(mailverwalter): Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0 [0xf7e44541] -> /usr/local/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x4e) [0xf7e4466e] -> /usr/local/lib/dovecot /libdovecot.so.0(i_error+0) [0xf7e44878] -> dsync [0x804f4d6] -> dsync [0x80537c7] -> dsync [0x8053a82] -
Regards, Matthias
On 10.7.2010, at 14.46, Matthias Rieber wrote:
The crash is a separate problem from the duplication. I did a couple of fixes though, see if it does something different now?
http://hg.dovecot.org/dovecot-2.0/rev/56cf4f6261dd http://hg.dovecot.org/dovecot-2.0/rev/06e4a422aa91
Hi,
On 10.07.2010 16:58, Timo Sirainen wrote:
dsync-local(mailverwalter): Info: Posteingang: Ignored 500 modseq changes dsync-local(mailverwalter): Info: Posteingang: Couldn't keep all uids dsync-local(mailverwalter): Panic: file dsync-worker-local.c: line 1515 (dsync_worker_try_finish): assertion failed: (!worker->finished) dsync-local(mailverwalter): Error: Raw backtrace: /usr/local/lib/dovecot/libdovecot.so.0 [0xf7eb9541] -> /usr/local/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x4e) [0xf7eb966e] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) [0xf7eb9878] -> dsync [0x8055c0b] -> dsync [0x8056551] -> dsync(dsync_worker_msg_save+0x4e) [0x8055a3e] -> dsync [0x8050824] -> dsync [0x8053837] -> dsync [0x8053b42] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0xf5) [0xf7ec5bc5] -> /usr/local/lib/dovecot/libdovecot.so.0(io_loop_run+0x30) [0xf7ec4c10] -> /usr/local/lib/dovecot/libdovecot.so.0(master_service_run+0x2a) [0xf7eb229a] -> dsync(main+0x732) [0x804db32] -> /lib/libc.so.6(__libc_start_main+0xe5) [0xf7d46455] -> dsync [0x804d0c1]
Backtrace:
Program terminated with signal 6, Aborted. [New process 2760] #0 0xf7d5a556 in raise () from /lib/libc.so.6 #0 0xf7d5a556 in raise () from /lib/libc.so.6 No symbol table info available. #1 0xf7d5bd78 in abort () from /lib/libc.so.6 No symbol table info available. #2 0xf7eb9555 in default_fatal_finish (type=<value optimized out>, status=0) at failures.c:164 backtrace = 0x9bd0bc0 "/usr/local/lib/dovecot/libdovecot.so.0 [0xf7eb9541] -> /usr/local/lib/dovecot/libdovecot.so.0(default_fatal_handler+0x4e) [0xf7eb966e] -> /usr/local/lib/dovecot/libdovecot.so.0(i_error+0) [0xf7eb9878]"... #3 0xf7eb966e in default_fatal_handler (type=LOG_TYPE_PANIC, status=0, format=0x8058c84 "file %s: line %d (%s): assertion failed: (%s)", args=0xfffdc7f4 "Ԥ\005\b�005") at failures.c:176 No locals. #4 0xf7eb9878 in i_panic (format=0x8058c84 "file %s: line %d (%s): assertion failed: (%s)") at failures.c:230 No locals. #5 0x08055c0b in dsync_worker_try_finish (worker=0x6) at dsync-worker-local.c:1515 __FUNCTION__ = "dsync_worker_try_finish" #6 0x08056551 in local_worker_msg_save (_worker=0x9bfd628, msg=0xf7b8b490, data=0x9bf9784, callback=0x8050740 <msg_save_callback>, context=0x9c20f88) at dsync-worker-local.c:1606 dest_box = (struct mailbox *) 0x9c366f8 save_ctx = (struct mail_save_context *) 0x9c0b230 __FUNCTION__ = "local_worker_msg_save" #7 0x08055a3e in dsync_worker_msg_save (worker=0x9bfd628, msg=0xf7b8b490, data=0x9bf9784, callback=0x8050740 <msg_save_callback>, context=0x9c20f88) at dsync-worker.c:231 _data_stack_cur_id = 3 #8 0x08050824 in msg_get_callback (result=DSYNC_MSG_GET_RESULT_SUCCESS, data=0x9bf9784, context=0x9c20f88) at dsync-brain-msgs-new.c:78 mailbox = (const struct dsync_brain_mailbox *) 0xf7b6f0cc input = (struct istream *) 0x9c21348 __FUNCTION__ = "msg_get_callback" #9 0x08053837 in proxy_client_worker_next_reply (worker=0x9bf96c0, line=0x9c38c5e "1\t12572\t1278754681\t") at dsync-proxy-client.c:225 request = {type = PROXY_CLIENT_REQUEST_TYPE_GET, uid = 12572, callback = {get = 0x8050790 <msg_get_callback>, copy = 0x8050790 <msg_get_callback>, finish = 0x8050790 <msg_get_callback>}, context = 0x9c20f88} ret = <value optimized out> #10 0x08053b42 in proxy_client_worker_input (worker=0x9bf96c0) at dsync-proxy-client.c:289 line = 0x9c38c5e "1\t12572\t1278754681\t" ret = <value optimized out> #11 0xf7ec5bc5 in io_loop_handler_run (ioloop=0x9bd7508) at ioloop-epoll.c:212 ctx = (struct ioloop_handler_context *) 0x9bd7618 event = (const struct epoll_event *) 0x9bd7658 list = (struct io_list *) 0x9bf97f0 io = (struct io_file *) 0x9bf97c8 tv = {tv_sec = 4, tv_usec = 657599} t_id = 2 msecs = <value optimized out> ret = 1 i = 0 j = 0 call = <value optimized out> #12 0xf7ec4c10 in io_loop_run (ioloop=0x9bd7508) at ioloop.c:350 No locals. #13 0xf7eb229a in master_service_run (service=0x9bd7448, callback=0x804d160 <dsync_connected>) at master-service.c:495 No locals. #14 0x0804db32 in main (argc=) at dsync.c:303 ssflags = <value optimized out> brain_flags = 3 storage_service = (struct mail_storage_service_ctx *) 0x9bd8108 service_user = (struct mail_storage_service_user *) 0x9bd89b8 input = {module = 0x805a518 "mail", service = 0x8058e13 "dsync", username = 0x9bd7207 "mailverwalter", local_ip = {family = 0, u = {ip6 = {in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {family = 0, u = {ip6 = {in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, userdb_fields = 0x0} mail_user = (struct mail_user *) 0x9bf01b0 mail_user2 = (struct mail_user *) 0x0 worker1 = (struct dsync_worker *) 0x9bfd628 worker2 = (struct dsync_worker *) 0x9bf96c0 workertmp = <value optimized out> error = <value optimized out> username = 0x9bd7207 "mailverwalter" cmd_name = 0x9bd7215 "mirror" mailbox = 0x0 local_location = 0x0 remote_cmd_args = (const char * const *) 0x9bcf080 dsync_server = false unexpected_changes = <value optimized out> dsync_debug = false reverse_workers = false alt_char = 95 '_' c = <value optimized out> ret = <value optimized out> fd_in = <value optimized out> fd_out = <value optimized out> __FUNCTION__ = "main"
Matthias
On 10.7.2010, at 17.05, Matthias Rieber wrote:
dsync-local(mailverwalter): Panic: file dsync-worker-local.c: line 1515 (dsync_worker_try_finish): assertion failed: (!worker->finished)
Fixed this and some other bugs in hg.
participants (2)
-
Matthias Rieber
-
Timo Sirainen