Robert Brewer avatar Robert Brewer committed c1a604d

Fix for #496 (memory leak in threadlocal objects).

Comments (0)

Files changed (2)

cherrypy/_cphttptools.py

         if not self.closed:
             self.closed = True
             applyFilters('on_end_request', failsafe=True)
+            cherrypy.serving.__dict__.clear()
+            cherrypy.thread_data.__dict__.clear()
     
     def run(self, requestLine, headers, rfile):
         """Process the Request.

cherrypy/_cpwsgi.py

             yield chunk
         if request:
             request.close()
+        request = None
     except (KeyboardInterrupt, SystemExit), ex:
         try:
             if request:
                 request.close()
         except:
             cherrypy.log(traceback=True)
+        request = None
         raise ex
     except:
         cherrypy.log(traceback=True)
                 request.close()
         except:
             cherrypy.log(traceback=True)
+        request = None
         s, h, b = _cputil.bareError()
         # CherryPy test suite expects bareError body to be output,
         # so don't call start_response (which, according to PEP 333,
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.