|
3 | 3 | import hudson.Extension; |
4 | 4 | import hudson.model.AbstractBuild; |
5 | 5 | import hudson.model.BuildListener; |
6 | | -import hudson.model.FreeStyleProject; |
7 | 6 | import hudson.model.Project; |
8 | | -import hudson.plugins.build_timeout.*; |
| 7 | +import hudson.plugins.build_timeout.BuildTimeOutOperation; |
| 8 | +import hudson.plugins.build_timeout.BuildTimeOutOperationDescriptor; |
| 9 | +import hudson.plugins.build_timeout.BuildTimeOutStrategy; |
| 10 | +import hudson.plugins.build_timeout.BuildTimeOutStrategyDescriptor; |
| 11 | +import hudson.plugins.build_timeout.BuildStepWithTimeout; |
9 | 12 | import hudson.plugins.build_timeout.operations.AbortOperation; |
10 | 13 | import hudson.tasks.Builder; |
11 | 14 | import jenkins.model.GlobalConfiguration; |
@@ -92,6 +95,18 @@ public Optional<Duration> timeOutFor(AbstractBuild<?, ?> build, BuildListener li |
92 | 95 | return Optional.empty(); |
93 | 96 | } |
94 | 97 | return Optional.of(Duration.ofMillis(strategy.getTimeOut(build, listener))); |
| 98 | + |
| 99 | + } catch (ClassCastException e) { |
| 100 | + log.log(WARNING, e, () -> String.format("%s cannot allow individual jobs to overwrite timeout due to ClassCastException", build.getExternalizableId())); |
| 101 | + if (strategy == null) { |
| 102 | + return Optional.empty(); |
| 103 | + } |
| 104 | + try { |
| 105 | + return Optional.of(Duration.ofMillis(strategy.getTimeOut(build, listener))); |
| 106 | + } catch (InterruptedException | MacroEvaluationException | IOException ex) { |
| 107 | + log.log(WARNING, ex, () -> String.format("%s failed to determine time out", build.getExternalizableId())); |
| 108 | + return Optional.empty(); |
| 109 | + } |
95 | 110 | } catch (InterruptedException | MacroEvaluationException | IOException e) { |
96 | 111 | log.log(WARNING, e, () -> String.format("%s failed to determine time out", build.getExternalizableId())); |
97 | 112 | return Optional.empty(); |
|
0 commit comments