diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-12-31 00:51:24 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-12-31 00:51:24 -0800 |
commit | 514bcc3aeea4d6086c270ad97599bd539b9e6ad0 (patch) | |
tree | 3728800da93a2826fbdd551646224046375b941c | |
parent | 74dcfe143392a2444aee1b2b4f8b0bb6ce36e91c (diff) | |
download | portage-514bcc3aeea4d6086c270ad97599bd539b9e6ad0.tar.gz portage-514bcc3aeea4d6086c270ad97599bd539b9e6ad0.tar.bz2 portage-514bcc3aeea4d6086c270ad97599bd539b9e6ad0.zip |
bintree: add timeout for closing binhost connv2.2.0_alpha11
Hopefully this solves bug #350139.
-rw-r--r-- | pym/portage/dbapi/bintree.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index d1c1e2a4b..68d6845db 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -23,7 +23,7 @@ from portage.cache.mappings import slot_dict_class from portage.const import CACHE_PATH from portage.dbapi.virtual import fakedbapi from portage.dep import Atom, use_reduce, paren_enclose -from portage.exception import InvalidPackageName, \ +from portage.exception import AlarmSignal, InvalidPackageName, \ PermissionDenied, PortageException from portage.localization import _ from portage import _movefile @@ -806,7 +806,18 @@ class binarytree(object): rmt_idx.readBody(f_dec) pkgindex = rmt_idx finally: - f.close() + # Timeout after 5 seconds, in case close() blocks + # indefinitely (see bug #350139). + try: + try: + AlarmSignal.register(5) + f.close() + finally: + AlarmSignal.unregister() + except AlarmSignal: + writemsg("\n\n!!! %s\n" % \ + _("Timed out while closing connection to binhost"), + noiselevel=-1) except EnvironmentError as e: writemsg(_("\n\n!!! Error fetching binhost package" \ " info from '%s'\n") % base_url) |