Re: AW: Patch to DorothyLocker

Thomas Klaeger <[email protected]> Thu, 23 Sep 2004 16:27:24 +0200
Newsgroups gmane.comp.pythin.pyds.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------020906080608050409000803
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

The patch was wrong since thread.lock#acquire takes no keyword 
arguments. It just needs to read acquire(1).

Regards,
Thomas

Thomas Klaeger schrieb:
> Hello!
> 
> I believe I found the problem:
> 
> According to the python docs for thread.lock#acquire (as found at 
> http://www.python.org/doc/2.2.3/lib/module-thread.html), acquire returns 
> None if called without an argument, so at DorothyLocker line 222 the 
> assert fails!
> 
> The attached patch corrects the problem by calling acquire(blocking=1)
> 
> Regards,
> Thomas
> 
> Bauer, Georg schrieb:
> 
>> Hi!
>>
>>
>>> Georg, could you please check in the patch Garth attached to his last
>>
>>
>> email?
>>
>> Hmm. When trying the patch, I got the attached tracebacks (lots of them).
>> Doesn't really look that good. I commited it nonetheless, so you can play
>> with it. But it's definitely not there, yet.
>>
>> Even more problematic: stopping it with pyds-stop and kill doesn't 
>> work any
>> more - looks like there is some endless loop or something like that 
>> inside.
>> I had to kill -9 the processes. Yuck. :-/
>>
>> The problem with terminating doesn't occur when I start without -v, so it
>> should be in the DorothyLocker stuff, not in the changes to Tool.py.
>>
>> bye, Georg
>>
> 
> ------------------------------------------------------------------------
> 
> Index: PyDS/DorothyLocker.py
> ===================================================================
> RCS file: /pyds/PyDS/PyDS/DorothyLocker.py,v
> retrieving revision 1.3
> diff -u -r1.3 DorothyLocker.py
> --- PyDS/DorothyLocker.py	23 Sep 2004 12:35:14 -0000	1.3
> +++ PyDS/DorothyLocker.py	23 Sep 2004 14:07:20 -0000
> @@ -216,7 +216,7 @@
>  			# LockWhiner and then perform a blocking wait. 
>  			whiner = LockWhiner(self, mycontext, myt)
>  			whiner.start()
> -			result = self.__block.acquire()
> +			result = self.__block.acquire(blocking=1)
>  		
>  			# We can ONLY get here if we succeeded...
>  			assert result # ... but you can never be too careful. 

--------------020906080608050409000803
Content-Type: text/plain;
 name="200409221625-dorothy.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="200409221625-dorothy.diff"

Index: PyDS/DorothyLocker.py
===================================================================
RCS file: /pyds/PyDS/PyDS/DorothyLocker.py,v
retrieving revision 1.3
diff -u -r1.3 DorothyLocker.py
--- PyDS/DorothyLocker.py	23 Sep 2004 12:35:14 -0000	1.3
+++ PyDS/DorothyLocker.py	23 Sep 2004 14:22:06 -0000
@@ -216,7 +216,7 @@
 			# LockWhiner and then perform a blocking wait. 
 			whiner = LockWhiner(self, mycontext, myt)
 			whiner.start()
-			result = self.__block.acquire()
+			result = self.__block.acquire(1)
 		
 			# We can ONLY get here if we succeeded...
 			assert result # ... but you can never be too careful. 

--------------020906080608050409000803--