azkaban-solo-server-3.15.0-1-g77411d7を使っていたらH2DBがぶっ壊れた

タイトルの通りです。

今まではazkaban-solo-server-3.1.0を使っていてHadoopのバージョアップのタイミングでazkaban-solo-server-3.15.0-1-g77411d7にして運用していたら下記のようなエラーメッセージがでて
http://localhost:8081/history にアクセスしても履歴がなくスケジュールも空になってました。

azkaban.executor.ExecutorManagerException: Error updating flow.
        at azkaban.executor.JdbcExecutorLoader.updateExecutableFlow(JdbcExecutorLoader.java:159)
        at azkaban.executor.JdbcExecutorLoader.updateExecutableFlow(JdbcExecutorLoader.java:126)
        at azkaban.execapp.FlowRunner.updateFlow(FlowRunner.java:306)
        at azkaban.execapp.FlowRunner.updateFlow(FlowRunner.java:300)
        at azkaban.execapp.FlowRunner.progressGraph(FlowRunner.java:498)
        at azkaban.execapp.FlowRunner.runFlow(FlowRunner.java:389)
        at azkaban.execapp.FlowRunner.run(FlowRunner.java:219)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: General error: "java.lang.IllegalStateException: Reading from nio:...
...
java.sql.SQLException: The database has been closed...

そういう状況だったのでsoloをやめてwebとexecutorを両方動かしてMySQLを使うように変更しました。

なおAzkabanは現在バイナリ提供しておらずソースビルドする必要があります。
Downloads

セットアップのやり方はAzkaban 3.0 Documentationを参考にしたのですが、いつくかはまったのでメモっておきます。

ソースビルドは下記コマンドで行いました。

./gradlew distZip

MySQLをセットアップしてテーブルを作成します。ドキュメントの通りにやるとCREATE権限が足りないのでGRANT ALLした方が早いと思います。

mysql -h ... < azkaban-sql-3.15.0-1-g77411d7/create-all-sql-3.15.0-1-g77411d7.sql

ソースビルドしてもwebとexecutor用のconfがないのでsoloからコピーしたりしたけど、いくつか足りなくて下記を踏みました。
Error Installing Azkaban · Issue #838 · azkaban/azkaban · GitHub
newest code, web-server StackOverflowError · Issue #860 · azkaban/azkaban · GitHub

そんな感じです。