Issue #1868: Eliminate subtle timing issues in thread-local objects by

getting rid of the cached copy of thread-local attribute dictionary.
This commit is contained in:
Antoine Pitrou 2010-08-28 18:17:03 +00:00
parent 64a38c0eb5
commit 1a9a9d5433
6 changed files with 182 additions and 91 deletions

View file

@ -194,6 +194,10 @@ class local(_localbase):
lock.release()
def __setattr__(self, name, value):
if name == '__dict__':
raise AttributeError(
"%r object attribute '__dict__' is read-only"
% self.__class__.__name__)
lock = object.__getattribute__(self, '_local__lock')
lock.acquire()
try:
@ -203,6 +207,10 @@ class local(_localbase):
lock.release()
def __delattr__(self, name):
if name == '__dict__':
raise AttributeError(
"%r object attribute '__dict__' is read-only"
% self.__class__.__name__)
lock = object.__getattribute__(self, '_local__lock')
lock.acquire()
try: