On 11/3/21 20:09, Zac Medico wrote:
The lockfile function is expected to raise PermissionDenied if
the (root) parent process holds the lock, so retry in this case.

Bug: https://bugs.gentoo.org/468990
Signed-off-by: Zac Medico <zmed...@gentoo.org>
---
  bin/ebuild-ipc.py | 11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index 4999c043a..6eaa658a2 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -158,7 +158,16 @@ class EbuildIpc:
          # Make locks quiet since unintended locking messages displayed on
          # stdout could corrupt the intended output of this program.
          portage.locks._quiet = True
-        lock_obj = portage.locks.lockfile(self.ipc_lock_file, unlinkfile=True)
+        # Acquire lock with PermissionDenied retry for bug #468990.
+        for _ in range(1000):
+            try:
+                lock_obj = portage.locks.lockfile(self.ipc_lock_file, 
unlinkfile=True)
+            except portage.exception.PermissionDenied:
+                time.sleep(0.1)
+            else:
+                break
+        else:
+            raise portage.exception.PermissionDenied(self.ipc_lock_file)
try:
              return self._communicate(args)


Withdrawn in favor of this lockfile permission race fix:

https://archives.gentoo.org/gentoo-portage-dev/message/88916062415d9f692091dfb947f1bda2
--
Thanks,
Zac

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to