RFR: 8081474: SwingWorker calls 'done' before the 'doInBackground' is finished [v21]
Sergey Bylokhov
serb at openjdk.org
Thu Feb 16 21:22:37 UTC 2023
On Thu, 16 Feb 2023 19:12:47 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:
>> src/java.desktop/share/classes/javax/swing/SwingWorker.java line 308:
>>
>>> 306: } finally {
>>> 307: doneEDT();
>>> 308: setState(StateValue.DONE);
>>
>> Can the test checks the case when the listener called from "setState" will throw an exception, I think some of the previous iterations of the fix will not work in this case.
>
>> Can the test checks the case when the listener called from "setState" will throw an exception, I think some of the previous iterations of the fix will not work in this case.
>
> This is not a new problem and _is not introduced_ by Prasanta's fix.
>
> I also found it while I was testing his changes and ran the test.
>
> If a listener throws an exception, all the following runnables which are already accumulated in `AccumulativeRunnable` are not run.
>
> I have already written a test for this case and I will submit a bug. It must not be included here.
I think the previous iteration of the fix was not run the doneEDT if the setState throws an exception, while the current version, and initial code always run it.
-------------
PR: https://git.openjdk.org/jdk/pull/11940
More information about the client-libs-dev
mailing list