Skip to content

Locks of one user prevent other users from loading the same compiler versions #155

@gsalzer

Description

@gsalzer

Environment information

  • py-solc-x Version: 1.1.1
  • OS: linux

What was wrong?

When downloading a compiler, py-solc-x acquires a lock for a file named /tmp/.solcx-lock-XXX, where XXX is the solc version currently processed. The lock file remains even after releasing the lock and finishing the program that uses py-solc-x (which is how fctl locks are supposed to work). However, when another user performs a similar operation resulting in the same lock file id (e.g., loading the same solc version), this operation will fail, as the lock file already exists, but is owned by the former user.

How can it be fixed?

Add the user id to the name of the lock file. In py-solc-x/solcx/utils/lock.py, the following changes are required.

  1. Import the package getpass.

    import getpass
  2. Replace the line

         self._lock_path = Path(tempfile.gettempdir()).joinpath(f".solcx-lock-{lock_id}")

    (in _ProcessLock.__init__, currently line 39) by

         self._lock_path = Path(tempfile.gettempdir()).joinpath(f".solcx-lock-{getpass.getuser()}-{lock_id}")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions