じぇじぇじぇ! jenkinsが動かない!
一話としてみたことないのに、流行に乗ってみました。
にわかキター!
と、いうわけで何もしてないのにjenkinsが動かなくなってしまいました><
実際は何もしてないわけではなく、yumでjenkinsをバージョンアップしたら、jenkinsの起動時に、以下のエラーメッセージが出て起動できなくなってしまったのです。
org.jvnet.hudson.reactor.ReactorException: hudson.util.IOException2: Unable to read /path/to/jenkins/config.xml at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:246) at jenkins.InitReactorRunner.run(InitReactorRunner.java:43) at jenkins.model.Jenkins.executeReactor(Jenkins.java:910) at jenkins.model.Jenkins.<init>(Jenkins.java:806) at hudson.model.Hudson.<init>(Hudson.java:81) at hudson.model.Hudson.<init>(Hudson.java:77) at hudson.WebAppMain$3.run(WebAppMain.java:221) Caused by: hudson.util.IOException2: Unable to read /path/to/jenkins/config.xml at hudson.XmlFile.unmarshal(XmlFile.java:170) at jenkins.model.Jenkins$17.run(Jenkins.java:2530) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259) at jenkins.model.Jenkins$7.runTask(Jenkins.java:899) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:679) Caused by: com.thoughtworks.xstream.converters.ConversionException: Could not set field class hudson.security.csrf.DefaultCrumbIssuer.PROXY_HEADER : null : Could not set field class hudson.security.csrf.DefaultCrumbIssuer.PROXY_HEADER : null ---- Debugging information ---- message : Could not set field class hudson.security.csrf.DefaultCrumbIssuer.PROXY_HEADER : null cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException cause-message : Could not set field class hudson.security.csrf.DefaultCrumbIssuer.PROXY_HEADER : null class : hudson.security.csrf.DefaultCrumbIssuer required-type : hudson.security.csrf.DefaultCrumbIssuer converter-type : hudson.util.RobustReflectionConverter path : /hudson/crumbIssuer/PROXY_HEADER line number : 40 class[1] : hudson.model.Hudson version : not available ------------------------------- at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79) at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:333) at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:275) at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:222) at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1061) at hudson.util.XStream2.unmarshal(XStream2.java:109) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1045) at hudson.XmlFile.unmarshal(XmlFile.java:166) ... 9 more Caused by: com.thoughtworks.xstream.converters.reflection.ObjectAccessException: Could not set field class hudson.security.csrf.DefaultCrumbIssuer.PROXY_HEADER : null at com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider.write(Sun14ReflectionProvider.java:141) at com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider.writeField(Sun14ReflectionProvider.java:104) at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:290) at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:222) at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ... 24 more Caused by: java.lang.IllegalArgumentException at sun.misc.Unsafe.objectFieldOffset(Native Method) at com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider.getFieldOffset(Sun14ReflectionProvider.java:150) at com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider.write(Sun14ReflectionProvider.java:112) ... 28 more
解決策
該当する設定項目をconfig.xmlから削除すると、エラーでなくなるけど、本当にこの解決方法でいいのだろうか。名前からしてCSRF対策のための設定なんだろうけど、設定の詳細がわからないのでちょっと不安。
(前略) <label></label> <!-- コメント化 <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer"> <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb> <PROXY__HEADER>X-Forwarded-For</PROXY__HEADER> </crumbIssuer> --> <nodeProperties/> (後略)
そもそもほかにこの事象に遭遇している人が少ない感じなので、もう少し様子を見てみよう
追記(2013/10/14)
1.534で解決したらしいですね
https://issues.jenkins-ci.org/browse/JENKINS-19613
1.533で使いたかったら、ワークアラウンドとして、私がやった解決方法である設定のコメントアウトをすればいいよってコメントもあり。ほんとにいいのかな、それで