Locks of one user prevent other users from loading the same compiler versions
- Dominant language
- Python
- Stars
- 142
- Forks
- 50
- PR merge metrics
- No merged PRs in 30d
Description
### 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`](https://github.com/iamdefinitelyahuman/py-solc-x/tree/master/solcx/utils/lock.py), the following changes are required.
1. Import the package `getpass`.
```python
import getpass
```
2. Replace the line
```python
self._lock_path = Path(tempfile.gettempdir()).joinpath(f".solcx-lock-{lock_id}")
```
(in `_ProcessLock.__init__`, currently line 39) by
```python
self._lock_path = Path(tempfile.gettempdir()).joinpath(f".solcx-lock-{getpass.getuser()}-{lock_id}")
```
Contributor guide
Assessment
This issue has not been assessed yet.