On Thu, 16 Feb 2023 21:19:59 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
> 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. It depends… If you change the order of the `doneEDT` and state, the listener throws the exception (as expected to fail the test) — then `done` isn't run because of the problem I just described above. It's an inherent problem in the implementation of `SwingWorker`. If you revert to the order of the calls in the latest revision and throw an exception from `done`, then listener for `DONE` state is not called. It's a different bug which exists *with and without* the fix we're currently discussing. I can repeat: I have a test which demonstrates the problem that you see now. The test reproduces the problem on any current build of Java (okay, I tested 17, 19 and 21). I will submit a new bug for it. ------------- PR: https://git.openjdk.org/jdk/pull/11940