<AWT Dev> [12] Review Request: 8210231 Robot.delay() catches InterruptedException and prints stacktrace to stderr.

Phil Race philip.race at oracle.com
Tue Jul 9 20:54:05 UTC 2019


So in all likelihood the executing thread is going to bail, but Robot 
isn't just used in tests, applications can use it if they want.
I don't know what in practice is likely to cause this exception (other 
than someone deliberately interrupting the thread) and so I find it hard 
to predict what unwanted consequences will manifest.

A test harness timing out a test may be the most likely but in that case 
the test already will be called failed,
does this make that failure "better" ? Perhaps but is this change going 
to help make tests more reliable?

There has to be a positive benefit that makes it worth the compatibility 
risks.

The CSR for this bug needs to call out all of the potential downsides.

-phil.




On 7/9/19 11:01 AM, Sergey Bylokhov wrote:
> On 07/07/2019 16:51, Philip Race wrote:
> 2) However I am still worried by this change of behaviour. We have a 
> sequence of Robot.delay() calls in a typical test and if one of them 
> gets interrupted, then the next one will also return immediately .. 
> since the status is already but right before it returns it will again 
> reset the interrupt status and so the same happens to the next one :
>
> Right, this is what I proposed if the thread was interrupted then all 
> subsequent calls to delay will be skipped(before this fix only the 
> first delay was skipped). So the test will ends immediately, or by 
> some exception if it uses the methods like Thread.sleep(), 
> EventQueue.invokeAndWait() etc.
>
> - Consider this :- public class I { public static void main(String[] 
> args) { Thread.currentThread().interrupt(); try { Thread.sleep(5000); 
> } catch (InterruptedException e) { e.printStackTrace(); } } }
>>
>> java I
>> java.lang.InterruptedException: sleep interrupted
>>      at java.lang.Thread.sleep(Native Method)
>>      at I.main(I.java:5)
>>
>> Are we to update all Robot tests to clear the interrupt status before 
>> calling delay ?
>>
>> Or should delay clear the status on entry to delay ?
>>
>> Or something else ?
> My proposal is do not change any tests or code which use delay(), I 
> guess it is not necessary.
>



More information about the awt-dev mailing list