I cannot compile the code you posted as it misses some dependencies:
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
> Configure project :lib
e: /Users/maxim/support/dynamic.fg/lib/build.gradle.kts:11:5: Unresolved reference: toolchain
e: /Users/maxim/support/dynamic.fg/lib/build.gradle.kts:12:9: Unresolved reference: languageVersion
e: /Users/maxim/support/dynamic.fg/lib/build.gradle.kts:12:29: Unresolved reference: JavaLanguageVersion
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/maxim/support/dynamic.fg/lib/build.gradle.kts' line: 11
* What went wrong:
Script compilation errors:
Line 11: toolchain {
^ Unresolved reference: toolchain
Line 12: languageVersion.set(JavaLanguageVersion.of(11))
^ Unresolved reference: languageVersion
Line 12: languageVersion.set(JavaLanguageVersion.of(11))
^ Unresolved reference: JavaLanguageVersion
3 errors
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
But looking at the workflow code I see that it processes state transitions from the signal method. My guess is that these state transitions evolve some blocking operations. When the signal method is blocked other signals will be delivered. See this issue for the proposed solution. Here is another one.
I agree that the current design is not ideal. I’m not sure if we can change it in a backward-compatible way.