-
Improvement
-
Resolution: Fixed
-
Major
Timeout step is currently only able to interrupt executions that are pausing (such as the 'sh' step.)
It would be nice if it can also interrupt infinite loops like while(true) ; by magically throwing an exception.
To safely doing this without race seems to require that CpsThread.runNextChunk spontaneously return even without the CPS code explicitly yielding. When resuming, any abnormal Outcome should act as if it's throwing the exception, and normal Outcome should get ignored and its natural result should be used instead.
The spontaneous return could happen every N instructions. Or CpsTransformer can insert Block that does it, like HotSpot inserts safepoint checks at the beginning of every function and every loop.
- is duplicated by
-
JENKINS-32228 Event when timeout is reach should be customizable
-
- Resolved
-
- is related to
-
JENKINS-32986 hard killing a pipeline leaves the JVM CPS thread running.
-
- Open
-
- relates to
-
JENKINS-38157 multiple new errors on long time running pipelines after latest update
-
- Resolved
-
- links to
We probably need a multistaged approach here.
¹Ignore the stern deprecation warnings. In practice it works fine—have used it for years in NetBeans “internal execution”, such as is used for Ant scripts—and any harm it might cause is AFAIK purely theoretical and a much lesser evil than JENKINS-32986.