On Mon, 29 Jan 2024 21:35:24 GMT, Nir Lisker <nlis...@openjdk.org> wrote:

>> tests/system/src/test/java/test/com/sun/javafx/animation/SynchronizationTest.java
>>  line 87:
>> 
>>> 85:         for (int i = 0; i < 10; i++) {
>>> 86:             executor.submit(runnable);
>>> 87:         }
>> 
>> I did a quick prototype of the idea I mentioned in my last comment, and it 
>> looks like it works:
>> 
>> 
>>         Runnable wrappedRunnable = () -> {
>>             try {
>>                 runnable.run();
>>             } catch (Throwable e) {
>>                 thread = Thread.currentThread();
>>                 throwable = e;
>>                 failed.set(true);
>>                 waiter.countDown();
>>             }
>>         };
>> 
>>         for (int i = 0; i < 10; i++) {
>>             executor.submit(wrappedRunnable);
>>         }
>> 
>> 
>> This obviates the need for the `registerExceptionHandler` calls in the two 
>> tests themselves (this one in _this_ method is still needed).
>
> I don't think the executor service catches the exception because if it did 
> then the `AnimationTimer` test would also always pass. I do get the AIOOB 
> exceptions from the background thread caught in the handler (which fails the 
> test). This test is rather stable for me. The `Animation` one is more 
> problematic, sometimes failing and sometimes not when it should fail.

Based on the testing I did, the executor service does prevent at least some 
exceptions that happen on the test thread from reaching the uncaught exception 
handler. An explicit try/catch will catch those.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1352#discussion_r1470290986

Reply via email to