PythonImport should use apache.import_module() and not PyImport_ImportModule().
-------------------------------------------------------------------------------

         Key: MODPYTHON-113
         URL: http://issues.apache.org/jira/browse/MODPYTHON-113
     Project: mod_python
        Type: Bug
  Components: core  
    Versions: 3.1.4, 3.2    
    Reporter: Graham Dumpleton


When the "PythonImport" directive is used, mod_python uses the 
"PyImport_ImportModule()" function to import the specified module. If that same 
module is later imported using the "apache.import_module()" function, it will 
be reloaded a second time even though the Python module file hadn't changed and 
even if "PythonAutoReload" is set to "Off".

This reloading can cause problems if the module when loaded using PythonImport 
had setup resources such as database connections etc. This is because 
"apache.import_module()" will effectively throw away the existing values
and replace them. This can be an issue if the resources aren't deleted properly 
and hold open stuff like socket connections with those connections no longer 
being accessible or useable.

The basic problem here is the mixing of standard Python import mechanism and 
any system implemented by mod_python. The best solution now and in the future, 
would be for the "PythonImport" directive to use the "apache.import_module()" 
function to import any modules. That way it would be ensured they always work 
together properly and not against each other.

Note that this problem was previously catalogued as ISSUE 17 on my list of 
mod_python module importing problems. This list of problems can be found at:

  http://www.dscpl.com.au/articles/modpython-003.html

-- 
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

Reply via email to