diff options
Diffstat (limited to 'webactivity.py')
-rw-r--r-- | webactivity.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/webactivity.py b/webactivity.py index d140128..6dbd222 100644 --- a/webactivity.py +++ b/webactivity.py @@ -241,6 +241,44 @@ class WebActivity(activity.Activity): else: _logger.debug('Created activity') + # README: this is a workaround to remove old temp file + # http://bugs.sugarlabs.org/ticket/3973 + self._cleanup_temp_files() + + def _cleanup_temp_files(self): + """Removes temporary files generated by Download Manager that + were cancelled by the user or failed for any reason. + + There is a bug in GLib that makes this to happen: + https://bugzilla.gnome.org/show_bug.cgi?id=629301 + """ + + try: + uptime_proc = open('/proc/uptime', 'r').read() + uptime = int(float(uptime_proc.split()[0])) + except EnvironmentError: + logging.warning('/proc/uptime could not be read') + uptime = None + + temp_path = os.path.join(self.get_activity_root(), 'instance') + now = int(time.time()) + cutoff = now - 24 * 60 * 60 # yesterday + if uptime is not None: + boot_time = now - uptime + cutoff = max(cutoff, boot_time) + + for f in os.listdir(temp_path): + if f.startswith('.goutputstream-'): + fpath = os.path.join(temp_path, f) + mtime = int(os.path.getmtime(fpath)) + if mtime < cutoff: + logging.warning('Removing old temporary file: %s', fpath) + try: + os.remove(fpath) + except EnvironmentError: + logging.error('Temporary file could not be ' + 'removed: %s', fpath) + def _on_focus_url_entry(self, gobject): self._primary_toolbar.entry.grab_focus() |