lizgehret
(Liz Gehret)
September 1, 2022, 6:21pm
1
Hi all,
We were notified this morning of a user permissions issue for folks who are utilizing a multi-user system . A detailed description on the issue can be found here:
opened 12:29AM - 01 Sep 22 UTC
**Bug Description**
I ran into a cryptic permissions error when trying out th… e same import command in two different user accounts on an Ubuntu remote server. Both are using the same `qiime2-2022.8` deployment, installed in the same way (according to qiime2 docs for conda, only difference being I used mamba to speed things up).
Import command:
```
qiime tools import \
--type 'SampleData[PairedEndSequencesWithQuality]' \
--input-path manifest.tsv \
--output-path 16s.qza \
--input-format PairedEndFastqManifestPhred33V2
```
This is what I was seeing in terms of an error message:
```
Traceback (most recent call last):
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/q2cli/builtin/tools.py", line 157, in import_data
artifact = qiime2.sdk.Artifact.import_data(type, input_path,
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/sdk/result.py", line 299, in import_data
return cls._from_view(type_, view, view_type, provenance_capture,
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/sdk/result.py", line 334, in _from_view
artifact._archiver = archive.Archiver.from_data(
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/core/archive/archiver.py", line 379, in from_data
path, process_alias, cache = cls._make_temp_path(uuid)
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/core/archive/archiver.py", line 274, in _make_temp_path
cache = get_cache()
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/core/cache.py", line 67, in get_cache
_CACHE.temp_cache = Cache()
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/core/cache.py", line 169, in __init__
self.path = pathlib.Path(self._get_temp_path())
File "/home/inigo/miniconda3/envs/qiime2-2022.8/lib/python3.8/site-packages/qiime2/core/cache.py", line 264, in _get_temp_path
os.chmod(cache_dir, sticky_permissions)
PermissionError: [Errno 1] Operation not permitted: '/tmp/qiime2'
An unexpected error has occurred:
[Errno 1] Operation not permitted: '/tmp/qiime2'
See above for debug info.
```
**Steps to reproduce the behavior**
1. Run import command for user 1. Import succeeds.
2. Run import command for user 2. Import fails with output above.
3. Return to user 1 terminal session. Run `rm -rf /tmp/qiime2`
4. Return to user 2. Retry import. Import succeeds.
I tried changing permissions from user 1's account (`chmod -R 777 /tmp/qiime2`) but it didn't fix the problem. Only solution I've come up with so far is the `rm -rf /tmp/qiime2`
I also tried `qiime2-2022.2` with the failing user, and it succeeded. So it seems to be something specific to `qiime2-2022.8` as far as I can tell. So I guess I'll just use the previous version until this is fixed or someone can tell me what I'm doing wrong.
**Expected behavior**
I expected both user sessions to be able to write whatever tmp files they need without interfering with one another.
**Computation Environment**
- Ubuntu 20.04.4 LTS
- qiime2-2022.8
We are currently working on a fix for this issue, and will be deploying a patch release with the fix early next week. For all folks who are on a multi-user system, our immediate recommendation is not to upgrade to QIIME 2 2022.8 until we've deployed our patch release.
If anyone on a multi-user system does need to utilize the 2022.8 update, the way that this multi-user error can be dealt with is to create a new temp folder (e.g., in your home directory) and export it as an environment variable by running the following:
mkdir $HOME/tmp/
export TMPDIR=$HOME/tmp/
Please note that you'll need to either re-run this command each time you close/re-open your terminal, or add this to your relevant shell start-up file (e.g., ~/.bashrc
, ~/.zshrc
, ...).
We apologize for any inconvenience this may cause! Please let us know if you need any assistance navigating this stop gap solution prior to the patch release. Thanks!
-The QIIME 2 Core Development Team
6 Likes
lizgehret
(Liz Gehret)
September 7, 2022, 5:43pm
4
Hello everyone!
This issue has been addressed in our 2022.8 patch release. Details can be found here:
Hello everyone!
We have just finished up our patch release for 2022.8. This includes a couple of important updates and fixes to the QIIME 2 Framework, and a bug that we found within q2-feature-table. Resolved issues are linked below for anyone interested:
QIIME 2 Framework
q2-feature-table
An updated Docker VM is also currently available for this patch release.
Happy :qiime2:ing!
4 Likes