RFR: 8263322: Deadlock when calling Application.launch in the FXThread after Platform.startup
Florian Kirmaier
fkirmaier at openjdk.java.net
Wed Mar 10 16:07:10 UTC 2021
On Wed, 10 Mar 2021 13:19:03 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> Fixing deadlock when calling Application.launch in the FXThread after Platform.startup
>
> tests/system/src/test/java/test/javafx/scene/InitializeJavaFXTest.java line 65:
>
>> 63: } catch (Exception e) {
>> 64: System.out.println("got exception: " + e);
>> 65: e.printStackTrace();
>
> You should rethrow the exception in this case, since it indicates an unexpected error. Better still, you can remove this block and not catch the Exception in the first place.
If I would rethrow it, it would just print it out, it's currently doing. I could save the Exception in a variable, to rethrow it from the other thread, but I think that would be unnecessarily complicated.
> tests/system/src/test/java/test/javafx/scene/InitializeJavaFXTest.java line 53:
>
>> 51: }
>> 52:
>> 53: @Test
>
> All of the test methods should take a timeout parameter: `@Test (timeout = 15000)`
done
> tests/system/src/test/java/test/javafx/scene/InitializeJavaFXTest.java line 56:
>
>> 54: public void testStartupThenLaunchInFX() throws Exception {
>> 55: CountDownLatch latch = new CountDownLatch(1);
>> 56: Platform.runLater(() -> {
>
> I recommend using `Util.runAndWait` since it will propagate exceptions from the `runLater` lambda to the caller.
This significantly simplifies the test!
-------------
PR: https://git.openjdk.java.net/jfx/pull/421
More information about the openjfx-dev
mailing list