kolomenkin / limbo

limbo: the file sharing lightweight service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

background thread crash

kolomenkin opened this issue · comments

After some time Limbo server stopped cleaning outdated files.

Here is a corresponding message from docker container log:

DBG> 2019-02-25 15:12:55: FileStorage: Remove outdated file: /tmp/storage/xxxxx-update.zip"; size: 38511704
DBG> 2019-02-25 15:12:55: FileStorage: Remove outdated file: /tmp/storage/фуы5нпрц4унпцюфю.ыцпафуц"; size: 9
DBG> 2019-02-25 15:12:55: FileStorage: Remove outdated file: /tmp/storage/zzzzzzzz-x64.msi"; size: 111149056
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/limbo/lib_file_storage.py", line 177, in _retension_thread_procedure
    self._check_retention()
  File "/opt/limbo/lib_file_storage.py", line 198, in _check_retention
    for file in os_listdir(self._temp_directory):
PermissionError: [Errno 13] Permission denied: '/tmp/storage/incomplete'

The root of the problem were wrong default directory permissions. They were set to 755 in decimal instead of 0755 in octal.

Correct code:

        if not os_path.isdir(self._storage_directory):
            os_makedirs(self._storage_directory, 0o755)

        if not os_path.isdir(self._temp_directory):
            os_makedirs(self._temp_directory, 0o755)

There should also be some fix to change ACL for previous versions.

Fixed in version commit 2695fcd (version 1.4.1)