NullPointerException in S3BucketPublisher.perform()

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major
    • Component/s: s3-plugin
    • None
    • Environment:
      Jenkins ver. 1.656, S3 plugin ver. 0.9.2

      Stacktrace:

      java.lang.NullPointerException
        at hudson.plugins.s3.S3BucketPublisher.perform(S3BucketPublisher.java:124)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:68)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:59)
        at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:49)
        at hudson.security.ACL.impersonate(ACL.java:213)
        at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:47)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
      

      Pipeline code snippet that triggers the NPE:

      step([$class: 'S3BucketPublisher', entries: [[bucket: bucket, flatten: true, noUploadOnFailure: true, selectedRegion: region,
          sourceFile: target, storageClass: 'STANDARD', uploadFromSlave: true, useServerSideEncryption: false]], profileName: profile, userMetadata: []])
      

      Issue looks to be that run.getResult() can return null. Workaround:

      --- a/src/main/java/hudson/plugins/s3/S3BucketPublisher.java
      +++ b/src/main/java/hudson/plugins/s3/S3BucketPublisher.java
      @@ -121,7 +121,10 @@ public final class S3BucketPublisher extends Recorder implements SimpleBuildStep
           public void perform(@Nonnull Run<?, ?> run, @Nonnull FilePath ws, @Nonnull Launcher launcher, @Nonnull TaskListener listener)
                   throws InterruptedException {
      
      -        final boolean buildFailed = run.getResult().equals(Result.FAILURE);
      +        final boolean buildFailed = Result.FAILURE.equals(run.getResult());
      +        if (buildFailed) {
      +          log(listener.getLogger(), "Run failed.");
      +        }
      
               final S3Profile profile = getProfile();
               if (profile == null) {
      

            Assignee:
            Alexander A
            Reporter:
            Jos Backus
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: