Django

Code

Changeset 5868

Show
Ignore:
Timestamp:
08/12/07 05:24:05 (1 year ago)
Author:
mtredinnick
Message:

Fixed #4909 -- Fixed a race condition with middleware initialisation in multi-threaded setups. Thanks, colin@owlfish.com.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/AUTHORS

    r5855 r5868  
    7979    Michal Chruszcz <troll@pld-linux.org> 
    8080    Ian Clelland <clelland@gmail.com> 
     81    colin@owlfish.com 
    8182    crankycoder@gmail.com 
    8283    Pete Crosier <pete.crosier@gmail.com> 
  • django/trunk/django/core/handlers/wsgi.py

    r5629 r5868  
    77from pprint import pformat 
    88from shutil import copyfileobj 
     9from threading import Lock 
    910try: 
    1011    from cStringIO import StringIO 
     
    177178 
    178179class WSGIHandler(BaseHandler): 
     180    initLock = Lock() 
     181 
    179182    def __call__(self, environ, start_response): 
    180183        from django.conf import settings 
     
    183186        # settings weren't available. 
    184187        if self._request_middleware is None: 
    185             self.load_middleware() 
     188            self.initLock.acquire() 
     189            # Check that middleware is still uninitialised. 
     190            if self._request_middleware is None: 
     191                self.load_middleware() 
     192            self.initLock.release() 
    186193 
    187194        dispatcher.send(signal=signals.request_started)