redisを使い、複数のlpushを行う時、なぜか最初のlpushが失敗する問題に当たった。
lpushの結果は、1が返ってくるのに、その直後にllenをすると0が返ってくるので、訳が分からずしばらくハマった。
原因は、他のところで行っていたbrpopのブロックが残っていたっぽい。
brpopのtimeoutに0を指定してみたけど、変わらない。
最初のpushでブロックが外れるようなので(でも書き込みはできてない)、しかたなく最初に空文字をpushすることで解決した。
もちろんbrpop側では、空文字が入っていた場合スルーする処理が必要