-
Notifications
You must be signed in to change notification settings - Fork 341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Defending against past corrupt builds #651
Defending against past corrupt builds #651
Conversation
I've seen builds failing in the wild during `junit` step execution with an exception like ``` java.lang.NullPointerException: Cannot invoke "hudson.model.Run.getRootDir()" because "this.run" is null at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.getDataFilePath(TestResultAction.java:154) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.loadCached(TestResultAction.java:317) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.load(TestResultAction.java:279) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.getResult(TestResultAction.java:166) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.getResult(TestResultAction.java:70) at PluginClassLoader for junit//hudson.tasks.test.AbstractTestResultAction.findCorrespondingResult(AbstractTestResultAction.java:286) at PluginClassLoader for junit//hudson.tasks.test.TestResult.getPreviousResult(TestResult.java:146) at PluginClassLoader for junit//hudson.tasks.junit.TestResult.getPreviousResult(TestResult.java:467) at PluginClassLoader for junit//hudson.tasks.junit.CaseResult.getPreviousResult(CaseResult.java:768) at PluginClassLoader for junit//hudson.tasks.junit.CaseResult.recomputeFailedSinceIfNeeded(CaseResult.java:669) at PluginClassLoader for junit//hudson.tasks.junit.CaseResult.freeze(CaseResult.java:950) at PluginClassLoader for junit//hudson.tasks.junit.SuiteResult.freeze(SuiteResult.java:730) at PluginClassLoader for junit//hudson.tasks.junit.TestResult.freeze(TestResult.java:1119) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.setResult(TestResultAction.java:125) at PluginClassLoader for junit//hudson.tasks.junit.TestResultAction.<init>(TestResultAction.java:96) at PluginClassLoader for junit//hudson.tasks.junit.JUnitResultArchiver.parseAndSummarize(JUnitResultArchiver.java:301) at PluginClassLoader for junit//hudson.tasks.junit.pipeline.JUnitResultsStepExecution.run(JUnitResultsStepExecution.java:62) at PluginClassLoader for junit//hudson.tasks.junit.pipeline.JUnitResultsStepExecution.run(JUnitResultsStepExecution.java:27) at PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) ``` While the root cause for such corruption is still to be identified, the plugin should defend against that condition and ignore such a build. Similar to jenkinsci/parallel-test-executor-plugin#282
while (true) { | ||
b = b.getPreviousBuild(); | ||
if (b == null) { | ||
return null; | ||
} | ||
AbstractTestResultAction r = b.getAction(getParentAction().getClass()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(ignore ws)
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Thanks for the fast turnaround! |
cc @jglick @lemeurherve
I've seen builds failing in the wild during
junit
step execution with an exception likeWhile the root cause for such corruption is still to be identified, the plugin should defend against that condition and ignore such a build.
Similar to jenkinsci/parallel-test-executor-plugin#282
Testing done
Submitter checklist