allow start on full disk
When disk is full, Sugar will not start, because the backup log
directory cannot be created.
X session logs in tmpfs show this exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/site-packages/jarabe/main.py", line 20, in <module>
logger.cleanup()
File "/usr/lib/python2.7/site-packages/sugar3/logger.py", line 113, in cleanup
os.mkdir(backup_dir)
OSError: [Errno 28] No space left on device: '/home/user/.sugar/default/logs/1448258018'
Fix is to ignore the exception.
We've been here before! Was previously fixed in 2010:
https://github.com/sugarlabs/sugar/commit/4cde481
https://bugs.sugarlabs.org/ticket/1720
http://dev.laptop.org/ticket/9623
But new regression introduced in 2012 during reorganisation of
code by Daniel Narvaez; the exception was no longer handled:
https://github.com/sugarlabs/sugar/commit/0e45f9d
https://github.com/sugarlabs/sugar/commit/19db9c5
Reported-by: Nathan Riddle <nathanr333@charter.net>
Tested-by: James Cameron <quozl@laptop.org>
This commit is contained in:
parent
ec7f723819
commit
280c74cd9e
@ -105,16 +105,21 @@ def cleanup():
|
|||||||
os.remove(os.path.join(root, f))
|
os.remove(os.path.join(root, f))
|
||||||
os.rmdir(root)
|
os.rmdir(root)
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
print "Could not remove old logs filesi %s" % e
|
print "Could not remove old logs files %s" % e
|
||||||
|
|
||||||
if len(backup_logs) > 0:
|
if len(backup_logs) > 0:
|
||||||
name = str(int(time.time()))
|
name = str(int(time.time()))
|
||||||
backup_dir = os.path.join(logs_dir, name)
|
backup_dir = os.path.join(logs_dir, name)
|
||||||
os.mkdir(backup_dir)
|
try:
|
||||||
for log in backup_logs:
|
os.mkdir(backup_dir)
|
||||||
source_path = os.path.join(logs_dir, log)
|
for log in backup_logs:
|
||||||
dest_path = os.path.join(backup_dir, log)
|
source_path = os.path.join(logs_dir, log)
|
||||||
os.rename(source_path, dest_path)
|
dest_path = os.path.join(backup_dir, log)
|
||||||
|
os.rename(source_path, dest_path)
|
||||||
|
except OSError, e:
|
||||||
|
# gracefully deal w/ disk full
|
||||||
|
if e.errno != errno.ENOSPC:
|
||||||
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def start(log_filename=None):
|
def start(log_filename=None):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user