アジの開きを閉じる。

競プロ(AtCoder)中心のブログ

MojaCoderでコンテスト終了後にトップページを更新したら順位表が消えた

2023/03/26追記

2023/03/11にMojaCoder運営のマクタモトさんが原因究明,修正をしてくださいました。私はWebやサーバーの仕組みに詳しくないのでよく分かっていませんが,原因は利用者増によるMojaCoder側の不具合だったようです。

サーバー側のプログラムが修正されたので,似た現象が起こる可能性は低減されました。他のコンテストでは「コンテスト中に順位表が落ちる」などの現象が見られ,これも原因は同じようです。(MojaCoderに限らず)アクセスが集中すると何らかの不具合が起こる可能性があるので,そのような時間帯のページ更新等は避けた方がより安全だと思います。

 

現象

2023/02/12

MojaCoderでコンテストを開催しました。手元のPCの時計で終了を確認し,終了後すぐ(3分未満)にトップページに解説を載せ「投稿」ボタンを押すと,トップページの更新は行われたものの順位表タブから見れた内容が消えた。

また,なぜかコンテストが2つ複製された(計3つ)。そのうち1つは勝手に消えた。

参加者は30名以上。自分は参加登録していない。

 

 

考えられる原因

①コンテスト中に更新するとコンテストのデータがすべて消える仕様

クライアント側かサーバー側か,データ送信のどこかでラグが生じ,実は更新時はまだコンテスト中だったのではないか。

 

②コンテスト後に更新するとコンテストのデータがすべて消える仕様

 

③コンテスト直後(3分未満)に更新するとコンテストのデータがすべて消える

コンテスト終了時はサーバーに負荷がかかるのかも。今回は参加者30名以上で負荷が大きかったのかも。

 

④別のタブでコンテストページを開いた状態で更新するとコンテストのデータがすべて消える

 

検証内容

今回のコンテストと同じアカウント(Aとする)で10分の公開コンテスト1,2,3を作成。

別のアカウントを作成し(Bとする),そのコンテストに参加する。(本来のコンテストでは同一人物が複数のアカウントを作成することは良くないこと)

 

以下を1つずつ検証し,現象を再現できるか確認する。

①コンテスト1の最中にトップページを更新。(原因①に対応)

②コンテスト1終了後,5分経過後にトップページを更新。(原因②に対応)

③コンテスト2の直後(30秒未満)にトップページを更新。(原因①③に対応)

④コンテスト3の終了後,5分経過後に,別のタブで順位表を開いた状態でトップページを更新。(原因④に対応)

 

検証結果

①再現できず。

トップページは更新された。

②再現できず。

トップページは更新された。

③再現できず。

トップページは更新された。

④再現できず。

トップページは更新された。

 

結論

原因不明。検証では現象を再現することができなかった。

他のコンテストでは終了後にトップページに解説を掲載して更新できているので,コンテスト後しばらく経っての更新は原因ではなさそう。

検証では参加者数1だったため再現できず,参加者が多くサーバーに負荷がかかった場合に生じるものなのかもしれない。コンテストが複製された挙動から,仕様ではなく何らかのバグっぽい。

 

対策

コンテスト後の更新は,終了後5分は空けると安全だと思われる。