とある掲示板の新規投稿をクローラーで確認処理しているのだが、たまに途中で処理が終了することがあって、原因を調べてみた。
問題の処理は、1ページ目から未処理の投稿を保存し、次のページに移動して、未処理の投稿がある場合は処理して次のページへ、という処理を全投稿が処理されたページになるまで続ける、というものだった。
調査すると、要するに1ページを処理する間に、1ページの投稿数以上の投稿が新規追加されていたのである。次のページに移動したら、一覧に出ているのが全部直前に処理した投稿なので、全て処理済ということで終了していたのだ。
処理を改善してこのような状況のときは終了しないようにしたが、考えてみれば、1ページの処理をしている間に1ページ以上の投稿があるのだから、全然追いついていない。この処理だと困るのではないか。