SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

サマータイムで不具合

Linuxのタイムゾーンの設定で、サマータイムがあるタイムゾーン適用されていることで、とある案件で、以下の様な事象がありました。

概要

あるシステムSは、外部のシステムAから、毎日レポートを取得して処理をおこなう。

Aについて

Aでは毎日0時に前日分のレポートを生成する。
レポートが出来上がるまでに数分程度のラグがある。
レポートのリクエストは日付が必須。
リクエストを受けたら該当日のレポートを返す。

Sについて

crontabで毎日午前1時に、前日を指定してリクエストを行ない、レポートを受け取って処理をおこなう。

問題発生

実装したのが年末ごろ。最近になってレポートが取得できなくなった。

取得できなかったリクエストを手動で実行してみると、何故か取得できる…

なんでだろう?なんでだろう?

原因

サマータイムの影響でシステムSの午前1時にリクエストしたのがシステムAでは午前0時にリクエストを受けた結果となり、Aでレポートが出来上がっていない状態になってしまったらしい。

システムSの利用者が米国なのでLinuxのタイムゾーンを変更していたのですが、それによってサマータイムの影響がCRONの実行時間にも影響してしまいました。

取得時間をずらして対応しました。

メモ

各国のサマータイム実施状況についておおざっぱにメモ。

国によってまちまち。
正確な切り替え日は、その年に決定する国もある。
国の中でも一律ではなかったりする。
アメリカだと2007年以前と以後で変わった。
ロシアやめた。
第○週の○曜日って何月何日?
南半球では逆。

ややこしいからやめようよ…と言いたくなる。

アメリカ合衆国(一部除く。2007年から)、カナダ(一部除く)、メキシコ(一部除く)
3月第2日曜日午前2時~11月第1日曜日 午前2時(現地時間基準)
開始日には2時が3時になり(1時59分59秒の次が3時00分00秒)
終了日は2時が再度1時(1時59分59秒の次が1時00分00秒)になるため、開始日は1日が23時間、終了日は逆に25時間になる)
アメリカの場合だとハワイ、サモア、グアム、プエルトリコ、米領ヴァージン諸島とアリゾナ州などの地区を含まない。
ヨーロッパ各国(一部除く)
3月最終日曜日午前1時~10月最終日曜日午前1時(UTC/GMT基準、2006年から)
ロシア
3月最終日曜日午前2時~10月最終日曜日午前3時(現地時間基準)
だったけど、2011年、夏時間を廃止。
オーストラリア(北部は実施なし、西部は2006年度から3年間試行中)
10月第一日曜日午前2時~翌年4月第一日曜日 午前3時(現地時間基準、2008年から)
ニュージーランド(一部除く)
9月最終日曜日午前2時~翌年4月第1日曜日午前3時(現地時間基準)
ブラジル(一部除く)
10月第3日曜日午前0時~翌年2月第3日曜日午前0時(現地時間基準)

関連するメモ

コメント