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