提出パイプラインはOnline Judgeのクリティカルパスだ。学生がコードを提出し、それがキューに入り、ワーカーが取り上げ、ジャッジに送信し、結果を待ち、書き戻す。理論上はシンプル。オリジナルのLeverage実装はRedis Listsで構築されたカスタムキューだった——そしてものが横道にそれたときにのみ現れる問題があった。
この投稿はなぜそれを置き換えたか、置き換えがどのように見えるか、そしてメッセージ配信について慎重に考えることを強制した特定のエッジケースについてだ。
オリジナルのキュー
オリジナルのコードにはRedis List操作でバックアップされたカスタムQueue<T>クラスがあった:
約4分
