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)