I'm having the same issue with Zimbra 8.7.7_GA_1787. It started when I upgraded zimbra-openldap-server to 2.4.46-1zimbra8.7b2.14.04 yesterday.
Dumping the config database with '/opt/zimbra/libexec/zmslapcat -c /tmp/dir' does work.
I ran an strace on the underlying command that is run (/opt/zimbra/common/sbin/slapcat -F /opt/zimbra/data/ldap/config -b "" -l /tmp/debugslapcat.ldiff). The relevant bit is:
Code: Select all
stat("/opt/zimbra/data/ldap/mdb/db", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/opt/zimbra/data/ldap/mdb/db/data.mdb", O_RDONLY) = 4
open("/opt/zimbra/data/ldap/mdb/db/lock.mdb", O_RDWR|O_CREAT|O_CLOEXEC, 0600) = 5
fcntl(5, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}) = -1 EAGAIN (Resource temporarily unavailable)
fcntl(5, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=0, len=1}) = 0
lseek(5, 0, SEEK_END) = 8192
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, 5, 0) = 0x7f86f7c9e000
fstatfs(4, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=25770312, f_bfree=12345554, f_bavail=11034834, f_files=6553600, f_ffree=5868188, f_fsid={-1334687925, -1613637921}, f_namelen=255, f_frsize=4096}) = 0
uname({sys="Linux", node="meel", ...}) = 0
pread(4, "\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\336\300\357\276\1\0\0\0\0\0\0\0\0\0\0\0"..., 152, 0) = 152
pread(4, "\1\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\336\300\357\276\1\0\0\0\0\0\0\0\0\0\0\0"..., 152, 4096) = 152
mmap(NULL, 52710469632, PROT_READ, MAP_SHARED, 4, 0) = 0x7f7aac89b000
fcntl(5, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=27104, len=1}) = 0
write(2, "5b9e02de mdb_db_open: database \""..., 147) = 147
munmap(0x7f7aac89b000, 52710469632) = 0
close(4) = 0
munmap(0x7f86f7c9e000, 8192) = 0
close(5) = 0
write(2, "5b9e02de backend_startup_one (ty"..., 80) = 80
write(2, "slap_startup failed\n", 20) = 20
exit_group(1)
It sets a lock on lock.mdb, but I'm not sure how to interpret that setting a write lock fails first, but then the read lock works. It does read stuff from the file, so it seems to work. It really just seems to be looking for keys that don't exist.