FileMaker Cloudでは 深夜の0時から3時の間に自動的に再起動を行うAuto-Maintenance機能があります(詳しくはこちら)。また、2017年10月にリリースされたFileMaker Cloud 1.16.1.18 からはサーバーでスクリプトのスケジュール実行が可能になりました(詳しくはこちら)。
今回はこれらの2つの時間が被ったときにどうなるのか、また時間の調整はどのように設定するのかをお伝えしたいと思います。
スケジュール実行中に、Auto-Maintenanceの時間がきたとき
Auto-Maintenanceは、実行前に現在接続中のユーザー数を確認して、>0なら今日のAuto-Maintenanceは見送るようになっています。スクリプトのスケジュールも実行中はServerという名のクライアントがそのファイルメーカーファイルへ接続中になっています。つまりこのケースでは次のようになります。
- スケジュールは問題なく実行される
- 今日のAuto-Maintenanceは見送り
Auto-Maintenance実行中に、スケジュールの時間がきたとき
Auto-Maintenanceは、すべてのサービスをきちんと終了させ再起動します。つまりスケジュールを実行できる状態ではありません。いろんなサービスが起動していないときなので、「スケジュールを実行したくてもできなかった」ようなエラーを書くこともできず、logにも残りません。実行されないかもしれないしエラーも吐かない状態は、スクリプトの内容によってはマズイと思います。
- Auto-Maintenanceは問題なく実行される
- スケジュールは実行されない
スケジュールとAuto-Maintenanceの時間をかぶらないように設定するには
スケジュールの時間は、自由に設定することができます。面倒な方は FileMaker Cloud スケジュール設定ツール FileMaker Cloud Schedule Manager をお使いください。深夜23:59から開始したスケジュールなら、どれだけ時間がかかっても正常にスクリプトを完了できます。「一時停止[ 60*2 ]」スクリプトステップを先頭に入れれば、23:59から開始されますが、最初の2分は待ちで、0:01から処理が進んでいくのでスクリプトは確実に実行されます。
深夜0時は日付が変わったばかりですので、1日1回のスクリプトスケジュールを実行したい一番良いタイミングですが、Auto-Maintenance は時間を指定することができません。「Local Time Zone」に設定した地域の時刻での、深夜0時から3時までのどこかの時間です。
ここからは、弊社独自に確認したことなので今後のアップデートで変更になるかもしれませんが、「Local Time Zone」を日本ではない地域に変更すればいいのです。Asia/Tokyo(UTC+09:00)から、例えばAsia/Bangkok(+07:00)に変更すれば、日本時間としては、深夜0時~3時ではなく、深夜2時~5時になります。Admin Consoleで変更すれば即時にAuto-Maintenance時間も再設定されます。「Local Time Zone」変えちゃって大丈夫なの?について、詳しくは別の投稿で説明(サーバーで実行するタイムスタンプは常にUTCという仕様)しますが、「Local Time Zone」はこのAuto-Maintenanceの現地時間を算出するためだけにしか使っていないのではないかと思っています(2018/2/3 ver1.16.1.18)。
Auto-Maintenanceの実行や、見送り、次の実行予定時間などは Event.log や journal.log を確認するとよくわかりますので、ご興味あればご確認ください。