A race condition in redis cluster setting resulted in client dataloss.
Single or a few clients
1. migrate some keys from node A to B (feature start)
2. While migrating, LPUSH key to node A, here A must be still in A (feature start)
3. while migrating, LPUSH key to B
You should observe the push in step 2 are lost.
In this order
No (node nondeterministic)
Hard to notice any starting point. you notice the data loss, but not sure how it occurred.
Impossible as it’s very likely that when you notice the data loss, nothing can be recovered.
The design is that when a key space is migrating from A to B, A and B will both accept queries for keys that hasn’t been migrated yet. If a key has already been migrated, A will no longer accept the query.