Apache Mod-Python - Commented: (MODPYTHON-184) Memory leak apache.table()

This is Interesting: Free IT Magazines  
Home > Archive > Apache Mod-Python > November 2006 > Commented: (MODPYTHON-184) Memory leak apache.table()





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Commented: (MODPYTHON-184) Memory leak apache.table()
Alexis Marrero (JIRA)

2006-11-07, 1:12 am

[ http://issues.apache.org/jira/brows...action_12447665 ]

Alexis Marrero commented on MODPYTHON-184:
------------------------------------------


[[ Old comment, sent by email on Tue, 15 Aug 2006 15:54:50 -0400 ]]

Jim,

This are my results for the memory leak search in apache.table().

The table object creates a memory pool by using apr_pool_create_ex()
and destroys the pool using apr_pool_destroy(). I added a line in
MpTable_New() before "return (PyObject*)t" to destroy the pool and
ran 1M iterations and I notice that there was no memory leak.
Therefore the apache functions seems to be working fine.

I couldn't fix the problem but here is a work around. In mod_python/
util.py instead of using apache.make_table() use a regular Python
dictionary. So the line that looks like:

headers = apache.make_table()

now looks like:

headers = {}

The apache table is basically used a Python dictionary. The only
functionality that is lost is that apache tables are case
insensitive, and that can be easily fixed by creating a class in
Python that inherits from dict type and override the __getitem__ and
__setitem__ methods.

For the moment I'm going to keep this changes until modpython.org
release a patch. I spent quite sometime trying to investigate and
solve the memory leak problem but the best I was able to do was to
work around it.

BTW, apache.table, apache.make_table or _apache.table is only being
used in mod_python/util.py.


/amn




> Memory leak apache.table()
> --------------------------
>
> Key: MODPYTHON-184
> URL: http://issues.apache.org/jira/browse/MODPYTHON-184
> Project: mod_python
> Issue Type: Bug
> Components: core
> Affects Versions: 3.3, 3.2.10
> Reporter: Jim Gallacher
> Assigned To: Jim Gallacher
> Fix For: 3.3
>
> Attachments: MP184-2006-08-25-grahamd-1.diff
>
>
> There is a memory leak in apache.table().
> from mod_python import apache
> def handler(req):
> req.content_type = 'text/plain'
> t = apache.make_table()
> req.write('ok table:')
> return apache.OK
> Using mpm-worker with StartServers 2, and 20000 requests results in memory consumption going from 1.2% to 9.3% per process. (ie approx 8k per request)
> This will have an impact on FieldStorage which makes use of apache.make_table(), which is the deprecated name for apache.table()


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com