-
Bug
-
Resolution: Unresolved
-
Minor
-
Win7
After a power failure a bunch of fingerprint files were corrupted and were just filled with 5kb of null chars. This caused any build that ran after to fail on the copyartifacts task. It should probably be made to handle parse exceptions.
As I understand it there is a fingerprint cleanup thread that runs periodically, can it be triggered manually? and will it remove fingerprint files that can't be parsed?
To fix the below error I just deleted all the corrupted files.
ERROR: Failed to copy artifacts from Workspace Processor with filter: install/**
hudson.util.IOException2: Failed to copy D:\jenkins\jobs\Workspace Processor\builds\2012-10-22_07-43-43\archive\install\Proxy\build.xml to D:\jenkins\jobs\Common\workspace\install\Proxy\build.xml
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:97)
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyAll(FingerprintingCopyMethod.java:64)
at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:243)
at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:215)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:807)
at hudson.model.Build$BuildExecution.build(Build.java:199)
at hudson.model.Build$BuildExecution.doRun(Build.java:160)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:589)
at hudson.model.Run.execute(Run.java:1516)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.util.IOException2: Unable to read D:\jenkins\fingerprints\0a\f0\9d4fd69dbb48671e2b504323d9b8.xml
at hudson.XmlFile.read(XmlFile.java:139)
at hudson.model.Fingerprint.load(Fingerprint.java:910)
at hudson.model.Fingerprint.load(Fingerprint.java:898)
at hudson.model.FingerprintMap.load(FingerprintMap.java:94)
at hudson.model.FingerprintMap.load(FingerprintMap.java:45)
at hudson.util.KeyedDataStorage.get(KeyedDataStorage.java:154)
at hudson.model.FingerprintMap.get(FingerprintMap.java:79)
at hudson.model.FingerprintMap.get(FingerprintMap.java:45)
at hudson.util.KeyedDataStorage.getOrCreate(KeyedDataStorage.java:108)
at hudson.model.FingerprintMap.getOrCreate(FingerprintMap.java:65)
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:90)
... 12 more
Caused by: com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not \u0 (position: START_DOCUMENT seen \u0... @1:1)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:78)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:154)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:147)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:126)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:111)
at com.thoughtworks.xstream.io.xml.XppReader.<init>(XppReader.java:48)
at com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:44)
at com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:49)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
at hudson.XmlFile.read(XmlFile.java:137)
... 22 more
Caused by: org.xmlpull.v1.XmlPullParserException: only whitespace content allowed before start tag and not \u0 (position: START_DOCUMENT seen \u0... @1:1)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1519)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:63)
... 31 more
As you mention there is a clean up thread, however triggering it will not resolve the problem if there are corrupt fingerprint files.
as when that runs it calls the same FingerPrint.load [1], as is called in the stack above and receives the same exception, which just causes it to log a warning [2], but does not delete the file.
I would suggest that this is a core issue as much as copy artifact plugin one.
Though the copy artifact plugin could be defensive and just not generate the fingerprints in these cases, and flag a warning in the logs. at [3].
[1] https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Fingerprint.java#L900
[2] https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/FingerprintCleanupThread.java#L102
[3] https://github.com/jenkinsci/copyartifact-plugin/blob/master/src/main/java/hudson/plugins/copyartifact/FingerprintingCopyMethod.java#L98