You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-commits@quetz.apache.org by gr...@apache.org on 2006/10/30 04:32:21 UTC
svn commit: r469055 - in /httpd/mod_python/trunk:
lib/python/mod_python/__init__.py lib/python/mod_python/importer.py
src/include/mpversion.h
Author: grahamd
Date: Sun Oct 29 19:32:20 2006
New Revision: 469055
URL: http://svn.apache.org/viewvc?view=rev&rev=469055
Log:
(MODPYTHON-143) Fix module cache debug output whereby it dies when no
modules in per request cache. Also update output so it lists children as
paths instead of magic module name. Also distinguish friends from children,
friends being modules that were imported as part of the execution of the
request handler and not module import and therefore aren't included in
dependency checks to determine if module should be reloaded.
Modified:
httpd/mod_python/trunk/lib/python/mod_python/__init__.py
httpd/mod_python/trunk/lib/python/mod_python/importer.py
httpd/mod_python/trunk/src/include/mpversion.h
Modified: httpd/mod_python/trunk/lib/python/mod_python/__init__.py
URL: http://svn.apache.org/viewvc/httpd/mod_python/trunk/lib/python/mod_python/__init__.py?view=diff&rev=469055&r1=469054&r2=469055
==============================================================================
--- httpd/mod_python/trunk/lib/python/mod_python/__init__.py (original)
+++ httpd/mod_python/trunk/lib/python/mod_python/__init__.py Sun Oct 29 19:32:20 2006
@@ -20,5 +20,5 @@
__all__ = ["apache", "cgihandler", "psp",
"publisher", "util", "python22"]
-version = "3.3.0-dev-20061029"
+version = "3.3.0-dev-20061030"
Modified: httpd/mod_python/trunk/lib/python/mod_python/importer.py
URL: http://svn.apache.org/viewvc/httpd/mod_python/trunk/lib/python/mod_python/importer.py?view=diff&rev=469055&r1=469054&r2=469055
==============================================================================
--- httpd/mod_python/trunk/lib/python/mod_python/importer.py (original)
+++ httpd/mod_python/trunk/lib/python/mod_python/importer.py Sun Oct 29 19:32:20 2006
@@ -975,6 +975,7 @@
apache.freeze_modules = _global_modules_cache.freeze_modules
apache.modules_graph = _global_modules_cache.modules_graph
+apache.module_info = _global_modules_cache.module_info
class _ModuleLoader:
@@ -1772,103 +1773,154 @@
print >> output, '<pre>'
print >> output, 'MOD_PYTHON ERROR'
print >> output
- print >> output, 'PID: %s' % pid
- print >> output, 'Interpreter: %s' % `iname`
- print >> output, 'Phase: %s' % `phase`
+ print >> output, 'ProcessId: %s' % pid
+ print >> output, 'Interpreter: %s' % `iname`
if req:
print >> output
- print >> output, 'URI: %s' % `req.uri`
- print >> output, 'Location: %s' % `location`
- print >> output, 'Directory: %s' % `directory`
- print >> output, 'Filename: %s' % `req.filename`
- print >> output, 'PathInfo: %s' % `req.path_info`
+ print >> output, 'URI: %s' % `req.uri`
+ print >> output, 'Location: %s' % `location`
+ print >> output, 'Directory: %s' % `directory`
+ print >> output, 'Filename: %s' % `req.filename`
+ print >> output, 'PathInfo: %s' % `req.path_info`
print >> output
- print >> output, 'Handler: %s' % cgi.escape(repr(hname))
+ print >> output, 'Phase: %s' % `phase`
+ print >> output, 'Handler: %s' % cgi.escape(repr(hname))
print >> output
for line in tb:
print >> output, cgi.escape(line)
- print >> output, "</pre>"
modules = _get_request_modules_cache()
- stime = time.asctime(time.localtime(modules.stime))
+ if hasattr(modules, 'generation'):
+ stime = time.asctime(time.localtime(modules.stime))
- print >> output, '<pre>'
- print >> output, 'MODULE CACHE DETAILS'
- print >> output
- print >> output, 'Generation: %s' % modules.generation
- print >> output, 'Created: %s' % stime
- print >> output
-
- labels = modules.keys()
- labels.sort()
-
- for label in labels:
+ print >> output
+ print >> output, 'MODULE CACHE DETAILS'
+ print >> output
+ print >> output, 'Accessed: %s' % stime
+ print >> output, 'Generation: %s' % modules.generation
+ print >> output
- module = modules[label]
+ labels = {}
- name = module.__name__
- filename = module.__file__
-
- cache = module.__mp_info__.cache
-
- ctime = time.asctime(time.localtime(cache.ctime))
- mtime = time.asctime(time.localtime(cache.mtime))
- atime = time.asctime(time.localtime(cache.atime))
-
- instance = cache.instance
- generation = cache.generation
- direct = cache.direct
- indirect = cache.indirect
- path = module.__mp_path__
-
- print >> output, '%s {' % name
- print >> output, ' Module: %s' % `filename`
- if instance == 1 and (cache.reload or \
- generation > modules.generation):
- print >> output, ' Instance: %s [IMPORT]' % instance
- elif cache.reload or generation > modules.generation:
- print >> output, ' Instance: %s [RELOAD]' % instance
- else:
- print >> output, ' Instance: %s' % instance
- if cache.reload:
- print >> output, ' Generation: %s [FAIL]' % generation
- elif generation > modules.generation:
- print >> output, ' Generation: %s [NEW]' % generation
- else:
- print >> output, ' Generation: %s' % generation
- if cache.mtime:
- print >> output, ' LastModified: %s' % mtime
- else:
- print >> output, ' LastModified:'
- if cache.ctime:
- print >> output, ' LastImported: %s' % ctime
- else:
- print >> output, ' LastImported:'
- if cache.atime:
- print >> output, ' LastAccessed: %s' % atime
- else:
- print >> output, ' LastAccessed:'
- print >> output, ' DirectHits: %s' % direct
- print >> output, ' IndirectHits: %s' % indirect
- print >> output, ' ModulePath: %s' % path
-
- print >> output, ' Children:',
- children = module.__mp_info__.children
- first = 1
- for child_name in children:
- if first:
- first = 0
- print >> output, '%s' % child_name,
+ keys = modules.keys()
+ for key in keys:
+ module = modules[key]
+ labels[module.__file__] = key
+
+ keys = labels.keys()
+ keys.sort()
+
+ for key in keys:
+ label = labels[key]
+
+ module = modules[label]
+
+ name = module.__name__
+ filename = module.__file__
+
+ cache = module.__mp_info__.cache
+
+ ctime = time.asctime(time.localtime(cache.ctime))
+ mtime = time.asctime(time.localtime(cache.mtime))
+ atime = time.asctime(time.localtime(cache.atime))
+
+ instance = cache.instance
+ generation = cache.generation
+ direct = cache.direct
+ indirect = cache.indirect
+ path = module.__mp_path__
+
+ print >> output, '%s {' % name
+ print >> output, ' FileName: %s' % `filename`
+ print >> output, ' Instance: %s' % instance,
+ if instance == 1 and (cache.reload or \
+ generation > modules.generation):
+ print >> output, '[IMPORT]'
+ elif cache.reload or generation > modules.generation:
+ print >> output, '[RELOAD]'
else:
- print >> output, ', %s' % child_name,
- print >> output
+ print >> output
+ print >> output, ' Generation: %s' % generation,
+ if cache.reload:
+ print >> output, '[ERROR]'
+ else:
+ print >> output
+ if cache.mtime:
+ print >> output, ' Modified: %s' % mtime
+ if cache.ctime:
+ print >> output, ' Imported: %s' % ctime
+
+ if len(path):
+ i = 0
+ print >> output, ' ModulePath: ',
+ for entry in path:
+ if i == 0:
+ if i == (len(path) - 1):
+ print >> output, '%s' % `entry`,
+ else:
+ print >> output, '%s,' % `entry`,
+ else:
+ print >> output
+ print >> output, ' %s' % `entry`,
+ i += 1
+ print >> output
+
+ friends = []
+ if cache.reload:
+ children = module.__mp_info__.children
+ else:
+ children = module.__mp_info__.cache.children
+ dependents = module.__mp_info__.children
+ for entry in dependents:
+ if entry not in children:
+ friends.append(entry)
+
+ if len(children):
+ i = 0
+ print >> output, ' Children: ',
+ for child_name in children:
+ child_cache = modules[child_name]
+ entry = child_cache.__mp_info__.file
+ if i == 0:
+ if i == (len(children) - 1):
+ print >> output, '%s' % `entry`,
+ else:
+ print >> output, '%s,' % `entry`,
+ else:
+ print >> output
+ print >> output, ' %s' % `entry`,
+ i += 1
+ print >> output
+
+ if len(friends):
+ i = 0
+ print >> output, ' Friends: ',
+ for child_name in friends:
+ try:
+ child_cache = modules[child_name]
+ entry = child_cache.__mp_info__.file
+ except:
+ try:
+ entry = apache.module_info(child_name).file
+ except:
+ entry = child_name
+ if i == 0:
+ if i == (len(friends) - 1):
+ print >> output, '%s' % `entry`,
+ else:
+ print >> output, '%s,' % `entry`,
+ else:
+ print >> output
+ print >> output, ' %s' % `entry`,
+ i += 1
+ print >> output
- print >> output, '}'
- print >> output
+ print >> output, '}'
+ print >> output
print >> output, '</pre>'
Modified: httpd/mod_python/trunk/src/include/mpversion.h
URL: http://svn.apache.org/viewvc/httpd/mod_python/trunk/src/include/mpversion.h?view=diff&rev=469055&r1=469054&r2=469055
==============================================================================
--- httpd/mod_python/trunk/src/include/mpversion.h (original)
+++ httpd/mod_python/trunk/src/include/mpversion.h Sun Oct 29 19:32:20 2006
@@ -1,5 +1,5 @@
#define MPV_MAJOR 3
#define MPV_MINOR 3
#define MPV_PATCH 0
-#define MPV_BUILD 20061029
-#define MPV_STRING "3.3.0-dev-20061029"
+#define MPV_BUILD 20061030
+#define MPV_STRING "3.3.0-dev-20061030"