From 80f42e41995d9b0b37ce2cb54ba16fa31d9fa3be Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Tue, 23 Dec 2008 13:28:27 -0500 Subject: [PATCH] Since tempfiles seem to occasionally be left behind, allow logging of open tempfiles, including a traceback (to determine callers) if LOG_TEMPFILES is set in the environment when Galaxy starts. This should be considered temporary and will be removed when it's determined where/how this happens. --- lib/log_tempfile.py | 27 +++++++++++++++++++++++++++ scripts/paster.py | 5 +++++ 2 files changed, 32 insertions(+) create mode 100644 lib/log_tempfile.py diff --git a/lib/log_tempfile.py b/lib/log_tempfile.py new file mode 100644 index 00000000000..3b23a1bd6e3 --- /dev/null +++ b/lib/log_tempfile.py @@ -0,0 +1,27 @@ +# override tempfile methods for debugging + +import tempfile, traceback + +import logging +log = logging.getLogger( __name__ ) + +class TempFile( object ): + def __init__( self ): + tempfile._NamedTemporaryFile = tempfile.NamedTemporaryFile + tempfile._mkstemp = tempfile.mkstemp + tempfile.NamedTemporaryFile = self.NamedTemporaryFile + tempfile.mkstemp = self.mkstemp + def NamedTemporaryFile( self, *args, **kwargs ): + f = tempfile._NamedTemporaryFile( *args, **kwargs ) + try: + log.debug( ( "Opened tempfile %s with NamedTemporaryFile:\n" % f.name ) + "".join( traceback.format_stack() ) ) + except AttributeError: + pass + return f + def mkstemp( self, *args, **kwargs ): + f = tempfile._mkstemp( *args, **kwargs ) + try: + log.debug( ( "Opened tempfile %s with mkstemp:\n" % f[1] ) + "".join( traceback.format_stack() ) ) + except TypeError: + pass + return f diff --git a/scripts/paster.py b/scripts/paster.py index 5887ec831cd..7624257a665 100755 --- a/scripts/paster.py +++ b/scripts/paster.py @@ -16,6 +16,11 @@ sys.path = new_path from galaxy import eggs import pkg_resources +if 'LOG_TEMPFILES' in os.environ: + from log_tempfile import TempFile + _log_tempfile = TempFile() + import tempfile + pkg_resources.require( "PasteScript" ) from paste.script import command