Hudson を試しているのですが、再起動すると二度と立ち上がらなくなるという事象にブツかって困っています。
環境
- Hudson 1.301
Ubuntu 8.10 でも WindowsXP SP3 でも Tomcat 6.0.18 でも Hudson 付属の Winstone 0.9.10 でも同じようにコケるので、OS や ServletEngine には依存していないようです。
事象
新規プロジェクト作成後、Hudson を再起動すると NullPointerException が発生する。画面に表示されるエラーログは下記のとおり。
java.lang.NullPointerException at hudson.model.Job.getACL(Job.java:1228) at hudson.model.AbstractItem.hasPermission(AbstractItem.java:209) at hudson.model.Hudson.getItems(Hudson.java:1023) at hudson.model.Hudson.getItems(Hudson.java:196) at hudson.model.Hudson.getAllItems(Hudson.java:1068) at hudson.model.DependencyGraph.(DependencyGraph.java:89) at hudson.model.Hudson.rebuildDependencyGraph(Hudson.java:3007) at hudson.model.Hudson.load(Hudson.java:1992) at hudson.model.Hudson.(Hudson.java:540) at hudson.WebAppMain$2.run(WebAppMain.java:191)
まず Ubuntu + Tomcat で当該事象に遭遇。その後、Ubuntu + Winstone でも同じ事象を確認。
ACL とか Permission などの権限周りっぽい文言が表示されているので、WindowsXP + Winstone でなら動くだろうと思って試してみたのですが、やっぱり同じ事象が発生してしまいました。
再現手順
WinodwsXP + Winstone で下記を実行すると再現します。
- java -jar hudson.war を実行して winstone 上で hudson を起動
- localhost:8080 にアクセス
- 新規ジョブ作成画面で、適当な名称を入力後、フリースタイル・プロジェクトにチェックを入れて「OK」ボタンをクリック
- プロジェクト設定画面で、何も入力せずに「保存」ボタンをクリック
- Ctrl + C で winstone を停止
- java -jar hudson.war を再度実行
- localhost:8080 に再度アクセス
上記手順を実行した際にコマンドプロンプトに出力されたエラーログは下記の通りです。
D:\work>java -jar hudson.war Running from: D:\work\hudson.war [Winstone 2009/05/02 10:31:54] - Beginning extraction from war file [Winstone 2009/05/02 10:32:07] - No webapp classes folder found - C:\Documents and Settings\xxxxx\.hudson\war\WEB-INF\classes hudson home directory: C:\Documents and Settings\xxxxx\.hudson [Winstone 2009/05/02 10:32:08] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled [Winstone 2009/05/02 10:32:08] - HTTP Listener started: port=8080 [Winstone 2009/05/02 10:32:08] - AJP13 Listener started: port=8009 2009/05/02 10:32:09 hudson.ClassicPluginStrategy createPluginWrapper 情報: Loading plugin: C:\Documents and Settings\xxxxx\.hudson\plugins\maven-plugin.hpi 2009/05/02 10:32:09 hudson.ClassicPluginStrategy explode 情報: Extracting C:\Documents and Settings\xxxxx\.hudson\plugins\maven-plugin.hpi 2009/05/02 10:32:16 hudson.ClassicPluginStrategy createPluginWrapper 情報: Loading plugin: C:\Documents and Settings\xxxxx\.hudson\plugins\ssh-slaves.hpi 2009/05/02 10:32:16 hudson.ClassicPluginStrategy explode 情報: Extracting C:\Documents and Settings\xxxxx\.hudson\plugins\ssh-slaves.hpi 2009/05/02 10:32:16 hudson.model.Hudson load 情報: Took 280 ms to load 2009/05/02 10:32:16 hudson.TcpSlaveAgentListener <init> 情報: JNLP slave agent listener started on TCP port 4822 2009/05/02 10:32:46 hudson.model.UpdateCenter doPostBack 情報: Obtained the latest update center data file [Winstone 2009/05/02 10:33:01] - Control thread shutdown successfully [Winstone 2009/05/02 10:33:01] - Winstone shutdown successfully D:\work>java -jar hudson.war Running from: D:\work\hudson.war [Winstone 2009/05/02 10:34:42] - Beginning extraction from war file [Winstone 2009/05/02 10:34:43] - No webapp classes folder found - C:\Documents and Settings\xxxxx\.hudson\war\WEB-INF\classes hudson home directory: C:\Documents and Settings\xxxxx\.hudson [Winstone 2009/05/02 10:34:44] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled [Winstone 2009/05/02 10:34:45] - HTTP Listener started: port=8080 [Winstone 2009/05/02 10:34:45] - AJP13 Listener started: port=8009 2009/05/02 10:34:45 hudson.ClassicPluginStrategy createPluginWrapper 情報: Loading plugin: C:\Documents and Settings\xxxxx\.hudson\plugins\maven-plugin.hpi 2009/05/02 10:34:45 hudson.ClassicPluginStrategy createPluginWrapper 情報: Loading plugin: C:\Documents and Settings\xxxxx\.hudson\plugins\ssh-slaves.hpi 2009/05/02 10:34:45 hudson.WebAppMain$2 run 致命的: Failed to initialize Hudson java.lang.NullPointerException at hudson.model.Job.getACL(Job.java:1228) at hudson.model.AbstractItem.hasPermission(AbstractItem.java:209) at hudson.model.Hudson.getItems(Hudson.java:1023) at hudson.model.Hudson.getItems(Hudson.java:196) at hudson.model.Hudson.getAllItems(Hudson.java:1068) at hudson.model.DependencyGraph.<init>(DependencyGraph.java:89) at hudson.model.Hudson.rebuildDependencyGraph(Hudson.java:3007) at hudson.model.Hudson.load(Hudson.java:1992) at hudson.model.Hudson.<init>(Hudson.java:540) at hudson.WebAppMain$2.run(WebAppMain.java:191) Exception in thread "hudson initialization thread" java.lang.NullPointerException at hudson.model.Job.getACL(Job.java:1228) at hudson.model.AbstractItem.hasPermission(AbstractItem.java:209) at hudson.model.Hudson.getItems(Hudson.java:1023) at hudson.model.Hudson.getItems(Hudson.java:196) at hudson.model.Hudson.getAllItems(Hudson.java:1068) at hudson.model.DependencyGraph.<init>(DependencyGraph.java:89) at hudson.model.Hudson.rebuildDependencyGraph(Hudson.java:3007) at hudson.model.Hudson.load(Hudson.java:1992) at hudson.model.Hudson.<init>(Hudson.java:540) at hudson.WebAppMain$2.run(WebAppMain.java:191)
try & error では埒が明かなくなってきたので、hudson のソースを読んでみます。