quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Graham Dumpleton (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (MODPYTHON-155) req.add_handler() and inheritance of directory to be searched for module
Date Thu, 03 Aug 2006 10:59:14 GMT
     [ http://issues.apache.org/jira/browse/MODPYTHON-155?page=all ]

Graham Dumpleton resolved MODPYTHON-155.
----------------------------------------

    Resolution: Fixed

Memory inefficiency fixed, but more importantly new problem caused by fixes for memory leaks
described in MODPYTHON-181 also addressed.

> req.add_handler() and inheritance of directory to be searched for module
> ------------------------------------------------------------------------
>
>                 Key: MODPYTHON-155
>                 URL: http://issues.apache.org/jira/browse/MODPYTHON-155
>             Project: mod_python
>          Issue Type: Sub-task
>          Components: importer
>            Reporter: Graham Dumpleton
>         Assigned To: Graham Dumpleton
>             Fix For: 3.3
>
>
> The documentation for req.add_handler() says:
> """Optional dir is a string containing the name of the directory to be added to the pythonpath.
If no directory is specified, then, if there is already a handler of the same type specified,
its directory is inherited, otherwise the directory of the presently executing handler is
used. I there is a PythonPath directive in effect, then sys.path will be set exactly according
to it (no directories added, the dir argument is ignored)."""
> This comment about the directory being inherited from the prior or currently executing
handler is actually bogus as the code does not do anything specific at all to try and implement
such behaviour. If it works this way at all it is partly by luck as what will actually dictate
where the module specified to the req.add_handler() method is found is the current order of
directories specified in sys.path. Since additional directories added into sys.path by the
old importer can be performed in effectively random order, behaviour could actually be quite
random if the same module name were used in multiple directories.
> Because the new importer doesn't add directories into sys.path for Python*Handler directives,
a problem will currently arise if no directory is supplied to req.add_handler(). Specifically,
a module may not be able to be found. This is because it can no longer fall back on to fact
that with old module importer, the directory corresponding to the Python*Handler directive
would be listed in sys.path somewhere.
> Thus, the documented behaviour for req.add_handler() when the directory hasn't been set
needs to actually be implemented as described with an appropriate directory being calculated
at the time that req.add_handler() is called with that directory being recorded as needing
to be searched for the module. In changing the code though, if old and new importers are going
to be supported during a transition phase, it must detect when the new module importer is
being used and only do this when it is, as otherwise it will screw up how modules are found
for the old importer.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message