人類最大の謎。JenkinsのCSS壊れる問題が解明された

CSSというか静的ファイル全般の配信が止まる。

f:id:laiso:20131212123800p:plain
(※我々の目の前で突如フラットUI化したJenkins氏の様子)

(みんな困っている)

今日また起きてなんとなく https://issues.jenkins-ci.org/browse/JENKINS-17526 を読んでみたらGreg Albrechtが書いてある方法で再現した。

曰くJettyのキャッシュがOSの日次処理(`man 8 periodic`)で削除されてしまうと起きるらしい。

試しに起動スクリプトJavaのtmpdir設定を入れて

/usr/bin/java -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Djava.io.tmpdir=$HOME/var/tmp/jetty -jar jenkins.war --httpPort=8080 --httpListenAddress=0.0.0.0

起動中に`rm -rf $HOME/var/tmp/jetty`してみたらまた発生したのでやっぱりこれが原因だった。

うちの環境はOS X上でjenkins.warから立ち上げて、内部のJettyが待ち受けてるポートにネットワーク内から直接アクセスして見てるだけなので、他の環境の人と同様かどうかは知らない。

パッチの登録が進んでるのでいずれ本体側で解決されるかもしれない

https://github.com/jenkinsci/jenkins/pull/1061

まとめ

  • Jenkins再起動すれば一旦直る
  • Jettyのキャッシュ出力を勝手に削除されない位置に変更する(-Djava.io.tmpdir=$HOME/var/tmp/jetty の部分)
  • Jetty以外のサーバーで動かす?(要出典)
  • Jenkins(やJetty)コミュニティ側で解決されるのを待つ*1

*1:04/15/14 まだ残ってるらしい https://twitter.com/muo_jp/status/455877915587010560