moveChunkするとなんかたまにデータが消える。なんぞ。
複合ShardKeyを利用してる状態でとあるChunkのMinがid:"hoge"、entryId:2000とかで、
かつid:"hoge"に一致するドキュメントが2個以上あるとき、
moveChunkのfindにおける引数にMinとまったく同じ値を入れて実行するとid:"hoge"に一致するentryId:2000以外のドキュメントが消える…。
oplog.rsにはinsertされたっぽいログが残ってるのになー。謎だなー。
再度ちゃんと確認したら残ってなかった。どのタイミングでこぼしてるんだ…。
バランサが悪さしてるのかなと思って止めたものの変わらず。なんだろう。詰んだ。
(2011.05.25追記)
移動元のログを見てみると
Mon May 23 10:11:24 [conn154] moveChunk number of documents: 8 (略) Mon May 23 10:11:26 [conn154] moveChunk migrate commit accepted by TO-shard: { active: false, ns: "test2.table01", from: "set03/mongodb03:10001,mongodb03:10003,mongodb03:10002", min: { userId: "hoge", entryId: 66876 }, max: { userId: MaxKey, entryId: MaxKey }, state: "done", counts: { cloned: 8, clonedBytes: 1889, catchup: 0, steady: 0 }, ok: 1.0 } (略) Mon May 23 10:11:26 [conn154] moveChunk deleted: 10
のように対象となったドキュメントを超えるドキュメントが削除されてる。
moveChunkしてる間は他の動作が起こっているような感じもないしうーんうーん。
公式のグループに質問投げてみようかなーと思いつつ再度同じような状況作ってmoveChunkしてたら再現しなくなった。ええー。