Handle KeyError when loading pickles.
authorZac Medico <zmedico@gentoo.org>
Sat, 29 Sep 2012 02:36:17 +0000 (19:36 -0700)
committerZac Medico <zmedico@gentoo.org>
Sat, 29 Sep 2012 02:36:17 +0000 (19:36 -0700)
See http://forums.gentoo.org/viewtopic-t-938022.html for example.

pym/_emerge/BlockerCache.py
pym/portage/dbapi/vartree.py
pym/portage/getbinpkg.py

index fce81f83abfdea15e63d69942e79d27d136cea94..91955249b81e173f4442fac6609c642a12cef2e8 100644 (file)
@@ -62,7 +62,9 @@ class BlockerCache(portage.cache.mappings.MutableMapping):
                        self._cache_data = mypickle.load()
                        f.close()
                        del f
-               except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
+               except (SystemExit, KeyboardInterrupt):
+                       raise
+               except Exception as e:
                        if isinstance(e, EnvironmentError) and \
                                getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES):
                                pass
index f8980f7a0abd4a324e10b8a91744788fa61dcce6..5299b298fd78da0042a794adb33eec4cbeab33d3 100644 (file)
@@ -585,7 +585,9 @@ class vardbapi(dbapi):
                        aux_cache = mypickle.load()
                        f.close()
                        del f
-               except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
+               except (SystemExit, KeyboardInterrupt):
+                       raise
+               except Exception as e:
                        if isinstance(e, EnvironmentError) and \
                                getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES):
                                pass
index 34a5e0efe7bcbdafc871a955569a6660b47d2f8e..538f8c23c08a6f2ef78a6d12c0f52e7c27b5a787 100644 (file)
@@ -559,7 +559,9 @@ def dir_get_metadata(baseurl, conn=None, chunk_size=3000, verbose=1, usingcache=
                out.write(_("Loaded metadata pickle.\n"))
                out.flush()
                metadatafile.close()
-       except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError):
+       except (SystemExit, KeyboardInterrupt):
+               raise
+       except Exception:
                metadata = {}
        if baseurl not in metadata:
                metadata[baseurl]={}