ApeWorX / ApeWorX/py-solc-x

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

Open
#155 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.