Date: Fri, 03 Mar 2017 13:30:30 +0000 From: bugzilla-noreply@freebsd.org To: pkg@FreeBSD.org Subject: [Bug 213611] ports-mgmt/pkg: 1.9.1 pkgdb locking doesn't work on NFS Message-ID: <bug-213611-32340-avCVasodvV@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-213611-32340@https.bugs.freebsd.org/bugzilla/> References: <bug-213611-32340@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D213611 iz-rpi03@hs-karlsruhe.de changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |iz-rpi03@hs-karlsruhe.de --- Comment #6 from iz-rpi03@hs-karlsruhe.de --- I am investigating the same problem. NFS lockd and statd are up an running. As far as I can tell sqlite uses the directory local.sqlite.lock in /var/db= /pkg for dotlocking /var/db/pkg/local.sqlite. But it never deletes it _there_. Doing "pkg-static info" on an unlocked database shows the expected output but leaves local.sqlite.lock in /var/db/pkg. Next time you call pkg or pkg-static you will get the "database is locked" error unless you are fast enough to remove /var/db/pkg/local.sqlite while pkg is running. The following part of ktrace/kdump shows the locking is done with a relative path. So it happens in /var/db/pkg. But the unlocking is done with a absolute path. An this path does not match the relative one used for locking. 95575 pkg-static CALL stat(0xbfbfe150,0xbfbfe0f0) 95575 pkg-static NAMI "/var/db/pkg" 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913835, mode=3D= 040755, nlink=3D2, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488515387.614408874, mtime=3D1488543581.397913666, ctime=3D1488543581.397913666, birthtime=3D-1, size=3D4096, blksize=3D4096, blocks=3D8, flags=3D0x0 } 95575 pkg-static RET stat 0 95575 pkg-static CALL eaccess(0xbfbfe150,0x4<R_OK>) 95575 pkg-static NAMI "/var/db/pkg" 95575 pkg-static RET eaccess 0 95575 pkg-static CALL stat(0xbfbfe150,0xbfbfe0f0) 95575 pkg-static NAMI "/var/db/pkg/local.sqlite" 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913839, mode=3D= 0100644, nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273, mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1, size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 } 95575 pkg-static RET stat 0 95575 pkg-static CALL eaccess(0xbfbfe150,0x4<R_OK>) 95575 pkg-static NAMI "/var/db/pkg/local.sqlite" 95575 pkg-static RET eaccess 0 95575 pkg-static CALL=20 openat(AT_FDCWD,0x2880f0e0,0x120000<O_RDONLY|O_DIRECTORY|O_CLOEXEC>) 95575 pkg-static NAMI "/var/db/pkg" 95575 pkg-static RET openat 4 95575 pkg-static CALL faccessat(0x4,0x83ecfb0,0x4<R_OK>,0x100) 95575 pkg-static NAMI "local.sqlite" 95575 pkg-static RET faccessat 0 95575 pkg-static CALL statfs(0x2880f0e0,0xbfbfe358) 95575 pkg-static NAMI "/var/db/pkg" 95575 pkg-static RET statfs 0 95575 pkg-static CALL lstat(0x2881f728,0xbfbfe390) 95575 pkg-static NAMI "local.sqlite" 95575 pkg-static RET lstat -1 errno 2 No such file or directory 95575 pkg-static CALL __getcwd(0x28848008,0x1ff) 95575 pkg-static NAMI "/root" 95575 pkg-static RET __getcwd 0 95575 pkg-static CALL getpid 95575 pkg-static RET getpid 95575/0x17557 95575 pkg-static CALL getpid 95575 pkg-static RET getpid 95575/0x17557 95575 pkg-static CALL fstatat(0x4,0x2884d206,0xbfbfdfe0,0) 95575 pkg-static NAMI "local.sqlite" 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913839, mode=3D= 0100644, nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273, mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1, size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 } 95575 pkg-static RET fstatat 0 95575 pkg-static CALL=20 openat(0x4,0x2884d206,0x100202<O_RDWR|O_CREAT|O_CLOEXEC>,0644<S_IRUSR|S_IWU= SR|S_IRGRP|S_IROTH>) 95575 pkg-static NAMI "local.sqlite" 95575 pkg-static RET openat 5 95575 pkg-static CALL fstat(0x5,0xbfbfde88) 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913839, mode=3D= 0100644, nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273, mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1, size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 } 95575 pkg-static RET fstat 0 95575 pkg-static CALL pread(0x5,0xbfbfe460,0x64,0,0) 95575 pkg-static GIO fd 5 read 100 bytes 0x0000 5351 4c69 7465 2066 6f72 6d61 7420 3300 0400 0101 0040 2020 0= 007 6598 0000 f56b 0000 766c 0000 1565 0000 1e32 |SQLite format 3......@=20 ..e....k..vl...e...2| [bytes are skipped] 95575 pkg-static RET pread 100/0x64 [lock the database] 95575 pkg-static CALL=20 mkdirat(0x4,0x2881f76e,0777<S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP= |S_IROTH|S_IWOTH|S_IXOTH>) 95575 pkg-static NAMI "local.sqlite.lock" 95575 pkg-static RET mkdirat 0 95575 pkg-static CALL fstatat(0x4,0x2884d21a,0xbfbfe058,0) 95575 pkg-static NAMI "local.sqlite-journal" 95575 pkg-static RET fstatat -1 errno 2 No such file or directory 95575 pkg-static CALL fstat(0x5,0xbfbfe058) 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913839, mode=3D= 0100644, nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488543655.118915624, mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1, size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 } 95575 pkg-static RET fstat 0 95575 pkg-static CALL fstatat(0x4,0x2884d235,0xbfbfe058,0) 95575 pkg-static NAMI "local.sqlite-wal" 95575 pkg-static RET fstatat -1 errno 2 No such file or directory 95575 pkg-static CALL fstat(0x5,0xbfbfe058) 95575 pkg-static STRU struct stat {dev=3D973143811, ino=3D913839, mode=3D= 0100644, nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488543655.118915624, mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1, size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 } 95575 pkg-static RET fstat 0 95575 pkg-static CALL pread(0x5,0x2889ce28,0x400,0,0) 95575 pkg-static GIO fd 5 read 1024 bytes 0x0000 5351 4c69 7465 2066 6f72 6d61 7420 3300 0400 0101 0040 2020 0= 007 6598 0000 f56b 0000 766c 0000 1565 0000 1e32 |SQLite format 3......@=20 ..e....k..vl...e...2| [bytes are skipped] 95575 pkg-static RET pread 1024/0x400 [unlock the database] 95575 pkg-static CALL rmdir(0x2881f768) 95575 pkg-static NAMI "/root/local.sqlite.lock" 95575 pkg-static RET rmdir -1 errno 2 No such file or directory 95575 pkg-static CALL utimes(0x2881f768,0) 95575 pkg-static NAMI "/root/local.sqlite.lock" 95575 pkg-static RET utimes -1 errno 2 No such file or directory 95575 pkg-static CALL fstatat(0x4,0x2884d21a,0xbfbfdf08,0) 95575 pkg-static NAMI "local.sqlite-journal" 95575 pkg-static RET fstatat -1 errno 2 No such file or directory 95575 pkg-static CALL fstat(0x5,0xbfbfdf08) Ralf --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-213611-32340-avCVasodvV>