Bug 45529 - appcenter/docker/invoke: IOError: [Errno 28] No space left on device
appcenter/docker/invoke: IOError: [Errno 28] No space left on device
Status: NEW
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 5.0
Other Linux
: P5 normal (vote)
: ---
Assigned To: UMC maintainers
UMC maintainers
:
: 45533 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2017-10-13 12:08 CEST by Florian Best
Modified: 2021-12-08 12:58 CET (History)
2 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 5: Major Usability: Impairs usability in key scenarios
Who will be affected by this bug?: 2: Will only affect a few installed domains
How will those affected feel about the bug?: 3: A User would likely not purchase the product
User Pain: 0.171
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2021120821000072, 2019032221000227, 2018112221001196, 2018100521000641, 2017101321000271
Bug group (optional): Error handling, External feedback
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Florian Best univentionstaff 2017-10-13 12:08:00 CEST
Version: 4.2-1 errata197 (Lesum)

Execution of command 'appcenter/docker/invoke' has failed:

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 249, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 128, in _deferred
    self.update_applications()
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 217, in update_applications
    update.call()
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 239, in call
    return obj.call_with_namespace(namespace)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 245, in call_with_namespace
    result = self.main(namespace)
  File "%PY2.7%/univention/appcenter/actions/update.py", line 82, in main
    if self._download_supra_files(appcenter_cache):
  File "%PY2.7%/univention/appcenter/actions/update.py", line 150, in _download_supra_files
    return self._download_files(appcenter_cache, ['categories.ini', 'rating.ini', 'license_types.ini', 'ucs.ini'])
  File "%PY2.7%/univention/appcenter/actions/update.py", line 167, in _download_files
    self._save_etags(cache, present_etags)
  File "%PY2.7%/univention/appcenter/actions/update.py", line 147, in _save_etags
    f.write('%s\t%s\n' % (fname, etag))
IOError: [Errno 28] No space left on device
Comment 1 Dirk Wiesenthal univentionstaff 2017-11-14 16:33:37 CET
Unclear how to solve this. We cannot put try/except around everything and wait for IOError #28. This may happen when saving cache files, creating password files, writing log files, etc.

The user could get a better error message. But we cannot solve it automatically. Also, after the App Center handled this one gracefully, other modules should fail, too.

Maybe this one could be handled in UMC's response handling directly instead of every function of the App Center (and possibly every other module)?

Although... handling in UMC means that CLI tools will fail with tracebacks...
Comment 2 Dirk Wiesenthal univentionstaff 2017-11-14 16:33:55 CET
*** Bug 45533 has been marked as a duplicate of this bug. ***
Comment 3 Johannes Keiser univentionstaff 2018-10-10 18:30:46 CEST
Reported again: Version: 4.2-2 errata262 (Lesum)

Die Ausführung des Kommandos appcenter/docker/progress ist fehlgeschlagen:

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 250, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 318, in _response
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 440, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 286, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/mixins.py", line 149, in progress
    ret = progress_obj.poll()
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 309, in _thread
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 440, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 286, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 418, in invoke_docker
    result['success'] = action.call(app=app, username=self.username, password=self.password, **kwargs)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 220, in call
    return obj.call_with_namespace(namespace)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
    result = self.main(namespace)
  File "%PY2.7%/univention/appcenter/actions/upgrade.py", line 75, in main
    return self.do_it(args)
  File "%PY2.7%/univention/appcenter/actions/install_base.py", line 137, in do_it
    self._register_installed_apps_in_ucr()
  File "%PY2.7%/univention/appcenter/actions/register.py", line 550, in _register_installed_apps_in_ucr
    'repository/app_center/installed': '-'.join(installed_codes),  # to be deprecated
  File "%PY2.7%/univention/appcenter/ucr.py", line 58, in ucr_save
    ucr_update(_UCR, changed_values)
  File "%PY2.7%/univention/config_registry/frontend.py", line 190, in ucr_update
    changed = ucr.update(changes)
  File "%PY2.7%/univention/config_registry/backend.py", line 140, in __exit__
    self.save()
  File "%PY2.7%/univention/config_registry/backend.py", line 116, in save
    registry.save()
  File "%PY2.7%/univention/config_registry/backend.py", line 395, in save
    self.__save_file(filename)
  File "%PY2.7%/univention/config_registry/backend.py", line 363, in __save_file
    reg_file.write(self.__str__())
IOError: [Errno 28] Auf dem Gerät ist kein Speicherplatz mehr verfügbar
Comment 4 Johannes Keiser univentionstaff 2019-01-31 17:57:56 CET
Reported again: Version: 4.3-2 errata313 (Neustadt)

Remark: kein speicherplatz

Interner Server-Fehler in "appcenter/docker/progress".
Request: appcenter/docker/progress

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 253, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 318, in _response
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 440, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 286, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/mixins.py", line 149, in progress
    ret = progress_obj.poll()
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 309, in _thread
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 192, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 440, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 286, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 431, in invoke_docker
    result['success'] = action.call(app=app, username=self.username, password=self.password, **kwargs)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 220, in call
    return obj.call_with_namespace(namespace)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
    result = self.main(namespace)
  File "%PY2.7%/univention/appcenter/actions/remove.py", line 53, in main
    return self.do_it(args)
  File "%PY2.7%/univention/appcenter/actions/install_base.py", line 154, in do_it
    self._register_installed_apps_in_ucr()
  File "%PY2.7%/univention/appcenter/actions/register.py", line 640, in _register_installed_apps_in_ucr
    'repository/app_center/installed': '-'.join(installed_codes),  # to be deprecated
  File "%PY2.7%/univention/appcenter/ucr.py", line 58, in ucr_save
    ucr_update(_UCR, changed_values)
  File "%PY2.7%/univention/config_registry/frontend.py", line 191, in ucr_update
    _run_changed(ucr, changed)
  File "%PY2.7%/univention/config_registry/frontend.py", line 203, in _run_changed
    handlers.load()
  File "%PY2.7%/univention/config_registry/handler.py", line 545, in load
    self.update()
  File "%PY2.7%/univention/config_registry/handler.py", line 717, in update
    self._save_cache()
  File "%PY2.7%/univention/config_registry/handler.py", line 761, in _save_cache
    pickler.dump(self._handlers)
IOError: [Errno 28] Auf dem Gerät ist kein Speicherplatz mehr verfügbar

Role: domaincontroller_master
Comment 5 Johannes Keiser univentionstaff 2019-03-22 11:29:09 CET
Reported again: Version: 4.3-3 errata428 (Neustadt)

Internal server error during "appcenter/docker/invoke".
Request: appcenter/docker/invoke

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 253, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 125, in _deferred
    self.update_applications()
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 233, in update_applications
    update.call()
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 220, in call
    return obj.call_with_namespace(namespace)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
    result = self.main(namespace)
  File "%PY2.7%/univention/appcenter/actions/update.py", line 75, in main
    if self._download_supra_files(appcenter_cache):
  File "%PY2.7%/univention/appcenter/actions/update.py", line 143, in _download_supra_files
    return self._download_files(appcenter_cache, ['categories.ini', 'rating.ini', 'license_types.ini', 'ucs.ini'])
  File "%PY2.7%/univention/appcenter/actions/update.py", line 160, in _download_files
    self._save_etags(cache, present_etags)
  File "%PY2.7%/univention/appcenter/actions/update.py", line 140, in _save_etags
    f.write('%s\t%s\n' % (fname, etag))
IOError: [Errno 28] No space left on device

Role: domaincontroller_master
Comment 6 Maximilian Janßen univentionstaff 2021-12-08 12:58:35 CET
Version: 5.0-0 errata164

Error: 
Interner Server-Fehler in "appcenter/run".
Request: appcenter/run

Traceback (most recent call last):
  File "%PY3%/univention/management/console/base.py", line 344, in __error_handling
    six.reraise(etype, exc, etraceback)
  File "%PY3%/six.py", line 693, in reraise
    raise value
  File "%PY3%/univention/management/console/base.py", line 247, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY3%/univention/management/console/modules/appcenter/__init__.py", line 127, in _deferred
    self.update_applications()
  File "%PY3%/univention/management/console/modules/appcenter/__init__.py", line 399, in update_applications
    update.call()
  File "%PY3%/univention/appcenter/actions/__init__.py", line 175, in call
    return obj.call_with_namespace(namespace)
  File "%PY3%/univention/appcenter/actions/__init__.py", line 181, in call_with_namespace
    result = self.main(namespace)
  File "%PY3%/univention/appcenter/actions/update.py", line 86, in main
    if self._download_apps(app_cache):
  File "%PY3%/univention/appcenter/actions/update.py", line 193, in _download_apps
    self._download_files(app_cache, ['all.tar.gz'])
  File "%PY3%/univention/appcenter/actions/update.py", line 158, in _download_files
    new_etag = self._download_file(server, filename, cache_dir, etag, ucs_version)
  File "%PY3%/univention/appcenter/actions/__init__.py", line 60, in _func
    return func(*args, **kwargs)
  File "%PY3%/univention/appcenter/actions/update.py", line 231, in _download_file
    f.write(content)
OSError: [Errno 28] Auf dem Gerät ist kein Speicherplatz mehr verfügbar

Role: domaincontroller_master