hudsonで二度とビルドできなくなる件
定時ビルドと、Build Nowが重なったのか、リポジトリを取得してできているワークディレクトリの状態がおかしくなると、二度とビルドできなくなる。以下のような例外が出て、何度ビルドしても解決しない。
ERROR: Error in subversion org.tmatesoft.svn.core.SVNCancelException: svn: Error aborting report svn: report aborted at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:58) at org.tmatesoft.svn.core.internal.wc.admin.SVNReporter.report(SVNReporter.java:111) at org.tmatesoft.svn.core.internal.io.dav.handlers.DAVEditorHandler.generateEditorRequest(DAVEditorHandler.java:81) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.update(DAVRepository.java:590) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:162) at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:379) at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:369) at hudson.FilePath.act(FilePath.java:191) at hudson.scm.SubversionSCM.update(SubversionSCM.java:369) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:241) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:222) at hudson.model.AbstractProject.checkout(AbstractProject.java:266) at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:139) at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:106) at hudson.model.Run.run(Run.java:533) at hudson.model.Build.run(Build.java:106) at hudson.model.Executor.run(Executor.java:61)
開発中はクライアントではよくある現象ですね。「クリーンナップしてください。」など言われてそうやっても「ロックされている」と言われたり、結局ディレクトリ削除して取り直すってのは、何度やっただろうか。チーム開発で各員が頻繁に更新しているとこの現象は顕著な気がする。で、これをhudsonのようにサーバーサイドでやっても同じで、これに陥ったらディレクトリを削除して取り直すしかやりようがない。tomcat再起動しても改善されないのです。仕方ないので、以下を削除します。hudsonはリポジトリからのチェックアウトを再度行って正常にビルドします。
/home/tomcat/.hudson/HUDSONプロジェクト名/チェックアウトディレクトリ
そんなわけでSVNクライアントをマルチで動作させるものはチェックアウトディレクトリの作成には要注意となりますね。このようなタイプにはテンポラリディレクトリを毎回作らないと危ういということになります。それにしても他のSCMではディレクトリ削除して取り直すなんて大鉈を振らなければならないという経験は無かったなぁ。SVNは素晴らしいのですが、クライアント側での堅牢性は厳しいと言わざるを得ないというところでしょうか。