From 23f3e479bebd45f46702c530c7ec2075b2abe70d Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Wed, 28 Jan 2015 16:20:30 -0500 Subject: [PATCH] Remove memdump, which probably has not worked for many years. --- config/galaxy.ini.sample | 4 -- eggs.ini | 1 - lib/galaxy/app.py | 9 +-- lib/galaxy/config.py | 1 - lib/galaxy/eggs/__init__.py | 2 - lib/galaxy/util/memdump.py | 50 --------------- lib/galaxy/web/base/controllers/admin.py | 42 ------------- templates/admin/memdump.mako | 76 ----------------------- templates/webapps/galaxy/admin/index.mako | 1 - 9 files changed, 1 insertion(+), 185 deletions(-) delete mode 100644 lib/galaxy/util/memdump.py delete mode 100644 templates/admin/memdump.mako diff --git a/config/galaxy.ini.sample b/config/galaxy.ini.sample index c7fa2f299cb..d912bbbc126 100644 --- a/config/galaxy.ini.sample +++ b/config/galaxy.ini.sample @@ -629,10 +629,6 @@ use_interactive = True # lot of CPU. #use_heartbeat = False -# Enable the memory debugging interface (careful, negatively impacts server -# performance). -#use_memdump = False - # -- Data Libraries # These library upload options are described in much more detail in the wiki: diff --git a/eggs.ini b/eggs.ini index 37e31f1eef5..ea881adbff9 100644 --- a/eggs.ini +++ b/eggs.ini @@ -26,7 +26,6 @@ pysam = 0.4.2 pysqlite = 2.5.6 python_lzo = 1.08_2.03_static PyYAML = 3.10 -guppy = 0.1.10 SQLAlchemy = 0.7.9 ; msgpack_python = 0.2.4 diff --git a/lib/galaxy/app.py b/lib/galaxy/app.py index 8bb8f119178..f9a4bbf8b38 100644 --- a/lib/galaxy/app.py +++ b/lib/galaxy/app.py @@ -107,10 +107,8 @@ class UniverseApplication( object, config.ConfiguresGalaxyMixin ): self.quota_agent = galaxy.quota.QuotaAgent( self.model ) else: self.quota_agent = galaxy.quota.NoQuotaAgent( self.model ) - # Heartbeat and memdump for thread / heap profiling + # Heartbeat for thread profiling self.heartbeat = None - self.memdump = None - self.memory_usage = None # Container for OpenID authentication routines if self.config.enable_openid: from galaxy.web.framework import openid_manager @@ -125,11 +123,6 @@ class UniverseApplication( object, config.ConfiguresGalaxyMixin ): self.heartbeat = heartbeat.Heartbeat( fname=self.config.heartbeat_log ) self.heartbeat.daemon = True self.heartbeat.start() - # Enable the memdump signal catcher if configured and available - if self.config.use_memdump: - from galaxy.util import memdump - if memdump.Memdump: - self.memdump = memdump.Memdump() # Transfer manager client if self.config.get_bool( 'enable_beta_job_managers', False ): from galaxy.jobs import transfer_manager diff --git a/lib/galaxy/config.py b/lib/galaxy/config.py index 94a40dc8e48..420a02b0a10 100644 --- a/lib/galaxy/config.py +++ b/lib/galaxy/config.py @@ -227,7 +227,6 @@ class Configuration( object ): self.external_chown_script = kwargs.get('external_chown_script', None) self.environment_setup_file = kwargs.get( 'environment_setup_file', None ) self.use_heartbeat = string_as_bool( kwargs.get( 'use_heartbeat', 'False' ) ) - self.use_memdump = string_as_bool( kwargs.get( 'use_memdump', 'False' ) ) self.log_actions = string_as_bool( kwargs.get( 'log_actions', 'False' ) ) self.log_events = string_as_bool( kwargs.get( 'log_events', 'False' ) ) self.sanitize_all_html = string_as_bool( kwargs.get( 'sanitize_all_html', True ) ) diff --git a/lib/galaxy/eggs/__init__.py b/lib/galaxy/eggs/__init__.py index 1938009bf99..3b8842697cb 100644 --- a/lib/galaxy/eggs/__init__.py +++ b/lib/galaxy/eggs/__init__.py @@ -385,8 +385,6 @@ class GalaxyConfig( object ): "DRMAA_python": lambda: "sge" in self.config.get( "app:main", "start_job_runners" ).split(","), "drmaa": lambda: "drmaa" in self.config.get( "app:main", "start_job_runners" ).split(","), "pbs_python": lambda: "pbs" in self.config.get( "app:main", "start_job_runners" ).split(","), - "threadframe": lambda: self.config.get( "app:main", "use_heartbeat" ), - "guppy": lambda: self.config.get( "app:main", "use_memdump" ), "python_openid": lambda: self.config.get( "app:main", "enable_openid" ), "python_daemon": lambda: sys.version_info[:2] >= ( 2, 5 ), "pysam": lambda: check_pysam(), diff --git a/lib/galaxy/util/memdump.py b/lib/galaxy/util/memdump.py deleted file mode 100644 index 25558ca4d47..00000000000 --- a/lib/galaxy/util/memdump.py +++ /dev/null @@ -1,50 +0,0 @@ - -# Attempt to load guppy module, and only define Memdump class -# if available - -try: - - import pkg_resources - pkg_resources.require( "guppy" ) - -except: - - import sys - print >> sys.stderr, "No guppy module, Memdump not available" - Memdump = None - -else: - - import os, sys, signal, time, guppy - - class Memdump( object ): - def __init__( self, signum=signal.SIGUSR1, fname="memdump.log" ): - self.fname = fname - signal.signal( signum, self.dump ) - self.heapy = guppy.hpy() - self.heap = None - def dump( self, signum, stack ): - file = open( self.fname, "a" ) - print >> file, "Memdump for pid %d at %s" % ( os.getpid(), time.asctime() ) - print >> file - try: - self.heap = self.heapy.heap() - print >> file, "heap():" - print >> file, self.heap - print >> file, "\nbyrcs:" - print >> file, self.heap.byrcs - print >> file, "\nbyrcs[0].byid:" - print >> file, self.heap.byrcs[0].byid - print >> file, "\nget_rp():" - print >> file, self.heap.get_rp() - self.heapy.setref() - except AssertionError: - pass - print >> file, "\nEnd dump\n" - file.close() - def setref( self ): - self.heapy.setref() - def get( self, update=False ): - if update: - self.heap = self.heapy.heap() - return self.heap diff --git a/lib/galaxy/web/base/controllers/admin.py b/lib/galaxy/web/base/controllers/admin.py index 9673da67474..e4ca72649dc 100644 --- a/lib/galaxy/web/base/controllers/admin.py +++ b/lib/galaxy/web/base/controllers/admin.py @@ -1024,48 +1024,6 @@ class Admin( object ): message=message, status=status ) - @web.expose - @web.require_admin - def memdump( self, trans, ids = 'None', sorts = 'None', pages = 'None', new_id = None, new_sort = None, **kwd ): - if self.app.memdump is None: - return trans.show_error_message( "Memdump is not enabled (set use_memdump = True in galaxy.ini)" ) - heap = self.app.memdump.get() - p = util.Params( kwd ) - msg = None - if p.dump: - heap = self.app.memdump.get( update = True ) - msg = "Heap dump complete" - elif p.setref: - self.app.memdump.setref() - msg = "Reference point set (dump to see delta from this point)" - ids = ids.split( ',' ) - sorts = sorts.split( ',' ) - if new_id is not None: - ids.append( new_id ) - sorts.append( 'None' ) - elif new_sort is not None: - sorts[-1] = new_sort - breadcrumb = "heap" % web.url_for(controller='admin', action='memdump') - # new lists so we can assemble breadcrumb links - new_ids = [] - new_sorts = [] - for id, sort in zip( ids, sorts ): - new_ids.append( id ) - if id != 'None': - breadcrumb += "[%s]" % ( web.url_for(controller='admin', action='memdump', ids=','.join( new_ids ), sorts=','.join( new_sorts ) ), id ) - heap = heap[int(id)] - new_sorts.append( sort ) - if sort != 'None': - breadcrumb += ".by('%s')" % ( web.url_for(controller='admin', action='memdump', ids=','.join( new_ids ), sorts=','.join( new_sorts ) ), sort ) - heap = heap.by( sort ) - ids = ','.join( new_ids ) - sorts = ','.join( new_sorts ) - if p.theone: - breadcrumb += ".theone" - heap = heap.theone - return trans.fill_template( '/admin/memdump.mako', heap = heap, ids = ids, sorts = sorts, breadcrumb = breadcrumb, msg = msg ) - - @web.expose @web.require_admin def jobs( self, trans, stop = [], stop_msg = None, cutoff = 180, job_lock = None, ajl_submit = None, **kwd ): diff --git a/templates/admin/memdump.mako b/templates/admin/memdump.mako deleted file mode 100644 index 63a6da35ecf..00000000000 --- a/templates/admin/memdump.mako +++ /dev/null @@ -1,76 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> - -<%def name="title()">Memory Profiling -<% - import re - from xml.sax.saxutils import escape, unescape -%> - - - -

Memory Profiling

- - - -<%def name="htmlize( heap )"> -<% - s = escape( str( heap ) ) - new_s = "" - id_re = re.compile('^(\s+)([0-9]+)') - for line in s.split( '\n' ): - try: - id = id_re.search( line ).group( 2 ) - except: - id = None - new_s += re.sub( id_re, r'\1\2', line ) - if id and heap[int(id)].count == 1: - new_s += " theone\n" % h.url_for( controller='admin', action='memdump', ids=ids, sorts=sorts, new_id=id, theone=True ) - else: - new_s += "\n" - return new_s -%> - - -%if message: - ${render_msg( message, status )} -%endif - -%if heap is None: - No memory dump available. Click "Dump memory" to create one. -%else: -
-    
-You are here: ${breadcrumb}
- %if breadcrumb.endswith( 'theone' ): - ${heap|h} - %else: - -Sort: - Class | - Clodo | - Id | - Idset | - Module | - Unity | - Rcs | - Size | - Type | - Via - - ${htmlize( heap )} - %endif -
-%endif diff --git a/templates/webapps/galaxy/admin/index.mako b/templates/webapps/galaxy/admin/index.mako index 85c755db18d..7997bdf4588 100644 --- a/templates/webapps/galaxy/admin/index.mako +++ b/templates/webapps/galaxy/admin/index.mako @@ -78,7 +78,6 @@
View tool lineage
Download tool tarball
Reload a tool's configuration
-
Profile memory usage
Manage jobs
Review tool migration stages
%if installing_repository_ids: