Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-33088

Can't upload to S3 direct from slaves if there is any "Metadata" field

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • s3-plugin
    • None

      Recently added a Linux build node to our Jenkins setup to build on Jessie, as our upgraded Wheezy wasn't cutting it, so now a job that just runs a build target to generate documentation (doxygen, but not using Jenkins doxygen plugin), then has a "promotion" to upload it to S3 "from slave" is running on that machine instead of on our master node. This has resulted in the promotions failing, with this error that I'll paste in full below, but with the distinguishing line that I can see here: Caused by: java.io.NotSerializableException: hudson.plugins.s3.MetadataPair That appears to be the main difference between this log and other similar errors I've found when searching - and the line that I haven't found on other logs.

      After further investigation, it turned out not to be related to the launch method, but to a configuration detail that didn't negatively affect upload from the master node, only from remote nodes. This upload task apparently had an empty "metadata tag" key/value pair added to it at some point in the past, which hadn't caused a problem until the actual promotion/upload occurred on a remote node. Deleting the empty key/value pair did allow for successful completion of the upload. (see screenshot)

      Building remotely on jessie-cloud (8.3 linux-build amd64-Debian Debian jessie ndk build Debian-8.3 amd64 Linux Debian-8 amd64-Debian-8.3) in workspace /home/jenkins/root/workspace/OSVR-Core-Docs
      Promoting OSVR-Core-Docs #220
      Publish artifacts to S3 Bucket Using S3 profile: resource.osvr.com
      Publish artifacts to S3 Bucket bucket=resource.osvr.com/docs/OSVR-Core, file=APIBaseC_8h.html region=us-west-1, upload from slave=true managed=false , server encryption false
      ERROR: Failed to upload files
      java.io.IOException: put Destination [bucketName=resource.osvr.com, objectName=docs/OSVR-Core/APIBaseC_8h.html]: java.io.IOException: remote file operation failed: /home/jenkins/root/workspace/OSVR-Core-Docs/build/docs-external/html/APIBaseC_8h.html at hudson.remoting.Channel@763d94d0:jessie-cloud: java.io.IOException: Unable to serialize hudson.FilePath$FileCallableWrapper@5eda3a2f:: Failed after 1 tries.
      	at hudson.plugins.s3.S3Profile.upload(S3Profile.java:202)
      	at hudson.plugins.s3.S3BucketPublisher.perform(S3BucketPublisher.java:182)
      	at hudson.plugins.promoted_builds.Promotion$RunnerImpl.build(Promotion.java:345)
      	at hudson.plugins.promoted_builds.Promotion$RunnerImpl.doRun(Promotion.java:287)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
      	at hudson.model.Run.execute(Run.java:1738)
      	at hudson.model.Run.run(Run.java:1676)
      	at hudson.plugins.promoted_builds.Promotion.run(Promotion.java:232)
      	at hudson.model.ResourceController.execute(ResourceController.java:98)
      	at hudson.model.Executor.run(Executor.java:410)
      Caused by: java.io.IOException: remote file operation failed: /home/jenkins/root/workspace/OSVR-Core-Docs/build/docs-external/html/APIBaseC_8h.html at hudson.remoting.Channel@763d94d0:jessie-cloud: java.io.IOException: Unable to serialize hudson.FilePath$FileCallableWrapper@5eda3a2f
      	at hudson.FilePath.act(FilePath.java:986)
      	at hudson.FilePath.act(FilePath.java:968)
      	at hudson.plugins.s3.S3Profile.upload(S3Profile.java:195)
      	... 9 more
      Caused by: java.io.IOException: Unable to serialize hudson.FilePath$FileCallableWrapper@5eda3a2f
      	at hudson.remoting.UserRequest.serialize(UserRequest.java:168)
      	at hudson.remoting.UserRequest.<init>(UserRequest.java:62)
      	at hudson.remoting.Channel.call(Channel.java:779)
      	at hudson.FilePath.act(FilePath.java:979)
      	... 11 more
      Caused by: java.io.NotSerializableException: hudson.plugins.s3.MetadataPair
      	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
      	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
      	at java.util.ArrayList.writeObject(ArrayList.java:742)
      	at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
      	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495)
      	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
      	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
      	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
      	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
      	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
      	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
      	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
      	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
      	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
      	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
      	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
      	at hudson.remoting.UserRequest._serialize(UserRequest.java:157)
      	at hudson.remoting.UserRequest.serialize(UserRequest.java:166)
      	... 14 more
      build hudson.plugins.s3.S3BucketPublisher@3b8618d5 UNSTABLE
      

            Unassigned Unassigned
            rpavlik Ryan Pavlik
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: