Mercurial > dovecot > core-2.2
changeset 22716:6287c6d66f56
dsync: Add debug logging for .dovecot-sync.lock locking/unlocking
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 28 Dec 2017 10:27:27 +0200 |
parents | 20415dd0b85a |
children | e33ad4efec00 |
files | src/doveadm/dsync/dsync-brain.c |
diffstat | 1 files changed, 25 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/dsync/dsync-brain.c Thu Dec 28 14:10:23 2017 +0200 +++ b/src/doveadm/dsync/dsync-brain.c Thu Dec 28 10:27:27 2017 +0200 @@ -376,6 +376,11 @@ if (brain->lock_fd != -1) { /* unlink the lock file before it gets unlocked */ i_unlink(brain->lock_path); + if (brain->debug) { + i_debug("brain %c: Unlocked %s", + brain->master_brain ? 'M' : 'S', + brain->lock_path); + } file_lock_free(&brain->lock); i_close_fd(&brain->lock_fd); } @@ -396,17 +401,29 @@ .lock_timeout_secs = brain->lock_timeout, .lock_method = FILE_LOCK_METHOD_FCNTL, }; - const char *home, *error; + const char *home, *error, *local_hostname = my_hostdomain(); bool created; int ret; - if ((ret = strcmp(remote_hostname, my_hostdomain())) < 0) { + if ((ret = strcmp(remote_hostname, local_hostname)) < 0) { /* locking done by remote */ + if (brain->debug) { + i_debug("brain %c: Locking done by remote " + "(local hostname=%s, remote hostname=%s)", + brain->master_brain ? 'M' : 'S', + local_hostname, remote_hostname); + } return 0; } if (ret == 0 && !brain->master_brain) { /* running dsync within the same server. locking done by master brain. */ + if (brain->debug) { + i_debug("brain %c: Locking done by local master-brain " + "(local hostname=%s, remote hostname=%s)", + brain->master_brain ? 'M' : 'S', + local_hostname, remote_hostname); + } return 0; } @@ -427,6 +444,12 @@ &brain->lock, &created, &error); if (brain->lock_fd == -1) i_error("Couldn't lock %s: %s", brain->lock_path, error); + else if (brain->debug) { + i_debug("brain %c: Locking done locally in %s " + "(local hostname=%s, remote hostname=%s)", + brain->master_brain ? 'M' : 'S', + brain->lock_path, local_hostname, remote_hostname); + } if (brain->verbose_proctitle) process_title_set(dsync_brain_get_proctitle(brain)); return brain->lock_fd == -1 ? -1 : 0;