tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  : 
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hangs.diff
Type: application/octet-stream
Size: 14893 bytes
Desc: hangs.diff
URL:
<http://rubyforge.org/pipermail/ironruby-core/attachments/20090106/da87d8e2/attachment-0001.obj>
Since no one has reviewed this yet, I have updated the change to factor out the
tests for alive?, inspect, status and stop?
Another product change was that Thread#value should return false if the thread
was killed. Only a thread with an uncaught exception should return nil.
Thanks,
Shri
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, January 06, 2009 11:49 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Code Review: hangs in core\thread
  tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  : 
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hangs.diff
Type: application/octet-stream
Size: 26816 bytes
Desc: hangs.diff
URL:
<http://rubyforge.org/pipermail/ironruby-core/attachments/20090107/19b136cd/attachment-0001.obj>
I would prefer using a field rather than a private auto-property for IsSleeping.
Other than that, changes in ThreadOps look good.
Tomas
-----Original Message-----
From: Shri Borde 
Sent: Wednesday, January 07, 2009 2:18 PM
To: ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Since no one has reviewed this yet, I have updated the change to factor out the
tests for alive?, inspect, status and stop?
Another product change was that Thread#value should return false if the thread
was killed. Only a thread with an uncaught exception should return nil.
Thanks,
Shri
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, January 06, 2009 11:49 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Code Review: hangs in core\thread
  tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  : 
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
Test Review:
classes.rb:
* can you change the get_status_... methods to status_... methods? The extra get
isn''t really used in Ruby.
* Did you want to have possibly stale information in the Status class?
* for running thread, why not just do:
def status_of_running_thread
  t = Thread.new {loop {}}
  Thread.pass until t.status == "run"
  status = Status.new t
  t.kill
  status
end
* critical_should_be_false should use ScratchPad instead of should''s in
the method. I would suggest trying to always keep shoulds in the spec itself.
* Can you modify method names and variables to be snake_case instead of
CamelCase?
Alive_spec.rb:
* (new thing I''m going to start doing with new guards) What''s
the justification for the compliant_on(:ruby) guard. Why isn''t it a
tag?
Critical_spec.rb:
* add a before(:each) block and move the ScratchPad.clear to there, then you can
add ScratchPad without thinking about it.
* Extra comment (#end) on line 49
Exit.rb:
* lines 11 and 23: I don''t see a reason for checking the value of the
threads. You are already checking the ScratchPad, so you know the execution ran.
Raise_spec.rb:
* You might need to remove the " raises an exception on running
thread" tag. I think I added one when doing dates.
Wakeup.rb:
* Line 38 has an unused Channel
* 1000 times for the deadlock test might be too long for a test. In principle
it''s nice for the stress portion, but it seems too long. I''d
also like to find another way than 1.should == 1, but you can check that in and
I''ll find a way.
JD
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Tomas Matousek
Sent: Wednesday, January 07, 2009 2:37 PM
To: Shri Borde; ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: Re: [Ironruby-core] Code Review: hangs in core\thread
I would prefer using a field rather than a private auto-property for IsSleeping.
Other than that, changes in ThreadOps look good.
Tomas
-----Original Message-----
From: Shri Borde
Sent: Wednesday, January 07, 2009 2:18 PM
To: ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Since no one has reviewed this yet, I have updated the change to factor out the
tests for alive?, inspect, status and stop?
Another product change was that Thread#value should return false if the thread
was killed. Only a thread with an uncaught exception should return nil.
Thanks,
Shri
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, January 06, 2009 11:49 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Code Review: hangs in core\thread
  tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  :
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
Inline..
Everything has been addressesd except I am not sure what you meant by " Did
you want to have possibly stale information in the Status class? ". The
shelveset has been updated.
Thanks,
Shri
-----Original Message-----
From: Jim Deville
Sent: Thursday, January 08, 2009 11:13 AM
To: ironruby-core at rubyforge.org; Shri Borde; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Test Review:
classes.rb:
* can you change the get_status_... methods to status_... methods? The extra get
isn''t really used in Ruby.
[Shri Borde] Done
* Did you want to have possibly stale information in the Status class?
[Shri Borde] What do you mean by this? It should capture the state of the thread
whenever Status.new was called.
* for running thread, why not just do:
def status_of_running_thread
  t = Thread.new {loop {}}
  Thread.pass until t.status == "run"
  status = Status.new t
  t.kill
  status
end
[Shri Borde] Done
* critical_should_be_false should use ScratchPad instead of should''s in
the method. I would suggest trying to always keep shoulds in the spec itself.
[Shri Borde] Done
* Can you modify method names and variables to be snake_case instead of
CamelCase?
[Shri Borde] Done
Alive_spec.rb:
* (new thing I''m going to start doing with new guards) What''s
the justification for the compliant_on(:ruby) guard. Why isn''t it a
tag?
[Shri Borde] I copied it from inspect_spec.rb. Until we understand how all the
guards are supposed to work (you are following up about that), I don''t
know how to clean this up. So I keeping the status quo.
Critical_spec.rb:
* add a before(:each) block and move the ScratchPad.clear to there, then you can
add ScratchPad without thinking about it.
[Shri Borde] Done. I think MSpec should be doing this, but oh well.
* Extra comment (#end) on line 49
[Shri Borde] Removed
Exit.rb:
* lines 11 and 23: I don''t see a reason for checking the value of the
threads. You are already checking the ScratchPad, so you know the execution ran.
[Shri Borde] Removed it. I had already added a separate test for Thread#value.
No point having the same test in two places.
Raise_spec.rb:
* You might need to remove the " raises an exception on running
thread" tag. I think I added one when doing dates.
[Shri Borde] Done
Wakeup.rb:
* Line 38 has an unused Channel
[Shri Borde] Removed
* 1000 times for the deadlock test might be too long for a test. In principle
it''s nice for the stress portion, but it seems too long. I''d
also like to find another way than 1.should == 1, but you can check that in and
I''ll find a way.
[Shri Borde] This test existed in wakeup_spec.rb and you said was removed from
RubySpec. I am actually tempted to remove it completely. I will check it in as
is and will let you figure out what to do when you pull in the new RubySpecs.
JD
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Tomas Matousek
Sent: Wednesday, January 07, 2009 2:37 PM
To: Shri Borde; ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: Re: [Ironruby-core] Code Review: hangs in core\thread
I would prefer using a field rather than a private auto-property for IsSleeping.
Other than that, changes in ThreadOps look good.
Tomas
-----Original Message-----
From: Shri Borde
Sent: Wednesday, January 07, 2009 2:18 PM
To: ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Since no one has reviewed this yet, I have updated the change to factor out the
tests for alive?, inspect, status and stop?
Another product change was that Thread#value should return false if the thread
was killed. Only a thread with an uncaught exception should return nil.
Thanks,
Shri
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, January 06, 2009 11:49 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Code Review: hangs in core\thread
  tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  :
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
I meant that the status of the thread might change after you call Status.new,
however, it looks like you meant for that to happen:
" It should capture the state of the thread whenever Status.new was
called."
I just wanted to be 100% sure this was the case. Everything else looks good.
JD
-----Original Message-----
From: Shri Borde
Sent: Thursday, January 08, 2009 11:39 AM
To: Jim Deville; ironruby-core at rubyforge.org; IronRuby External Code
Reviewers
Subject: RE: Code Review: hangs in core\thread
Inline..
Everything has been addressesd except I am not sure what you meant by " Did
you want to have possibly stale information in the Status class? ". The
shelveset has been updated.
Thanks,
Shri
-----Original Message-----
From: Jim Deville
Sent: Thursday, January 08, 2009 11:13 AM
To: ironruby-core at rubyforge.org; Shri Borde; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Test Review:
classes.rb:
* can you change the get_status_... methods to status_... methods? The extra get
isn''t really used in Ruby.
[Shri Borde] Done
* Did you want to have possibly stale information in the Status class?
[Shri Borde] What do you mean by this? It should capture the state of the thread
whenever Status.new was called.
* for running thread, why not just do:
def status_of_running_thread
  t = Thread.new {loop {}}
  Thread.pass until t.status == "run"
  status = Status.new t
  t.kill
  status
end
[Shri Borde] Done
* critical_should_be_false should use ScratchPad instead of should''s in
the method. I would suggest trying to always keep shoulds in the spec itself.
[Shri Borde] Done
* Can you modify method names and variables to be snake_case instead of
CamelCase?
[Shri Borde] Done
Alive_spec.rb:
* (new thing I''m going to start doing with new guards) What''s
the justification for the compliant_on(:ruby) guard. Why isn''t it a
tag?
[Shri Borde] I copied it from inspect_spec.rb. Until we understand how all the
guards are supposed to work (you are following up about that), I don''t
know how to clean this up. So I keeping the status quo.
Critical_spec.rb:
* add a before(:each) block and move the ScratchPad.clear to there, then you can
add ScratchPad without thinking about it.
[Shri Borde] Done. I think MSpec should be doing this, but oh well.
* Extra comment (#end) on line 49
[Shri Borde] Removed
Exit.rb:
* lines 11 and 23: I don''t see a reason for checking the value of the
threads. You are already checking the ScratchPad, so you know the execution ran.
[Shri Borde] Removed it. I had already added a separate test for Thread#value.
No point having the same test in two places.
Raise_spec.rb:
* You might need to remove the " raises an exception on running
thread" tag. I think I added one when doing dates.
[Shri Borde] Done
Wakeup.rb:
* Line 38 has an unused Channel
[Shri Borde] Removed
* 1000 times for the deadlock test might be too long for a test. In principle
it''s nice for the stress portion, but it seems too long. I''d
also like to find another way than 1.should == 1, but you can check that in and
I''ll find a way.
[Shri Borde] This test existed in wakeup_spec.rb and you said was removed from
RubySpec. I am actually tempted to remove it completely. I will check it in as
is and will let you figure out what to do when you pull in the new RubySpecs.
JD
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Tomas Matousek
Sent: Wednesday, January 07, 2009 2:37 PM
To: Shri Borde; ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: Re: [Ironruby-core] Code Review: hangs in core\thread
I would prefer using a field rather than a private auto-property for IsSleeping.
Other than that, changes in ThreadOps look good.
Tomas
-----Original Message-----
From: Shri Borde
Sent: Wednesday, January 07, 2009 2:18 PM
To: ironruby-core at rubyforge.org; IronRuby External Code Reviewers
Subject: RE: Code Review: hangs in core\thread
Since no one has reviewed this yet, I have updated the change to factor out the
tests for alive?, inspect, status and stop?
Another product change was that Thread#value should return false if the thread
was killed. Only a thread with an uncaught exception should return nil.
Thanks,
Shri
-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at
rubyforge.org] On Behalf Of Shri Borde
Sent: Tuesday, January 06, 2009 11:49 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Code Review: hangs in core\thread
  tfpt review "/shelveset:hangs;REDMOND\sborde"
  Comment  :
  Non-deterministic fixes. I ran all the core\thread specs in a loop in multiple
processes and ran into a few non-deterministic failures. This change fixes
everything I ran into. The only product change is that Thread#wakeup is not
queued up if the target thread is not sleeping. This is the MRI behavior.
 Also started using comments in the tag files like this - fails("reason
why"):test name. I will undo this if Jim says that he will be regenerating
the tags file periodically.
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core