Please sign in to comment.
[Backport] MB-4595 Schedule backfill for a fresh empty client
There is a case that causes data loss after rebalance in the cluster running for a very short period: 1) Start the one node cluster and load a small number of items into the node. The node will still have the open checkpoint with id 1 for each vbucket. 2) Shutdown the node and start it again. After warmup, the node still has the open checkpoint 1 for each vbucket, but each checkpoint doesn't have any items in its datastructure. 3) Add another fresh node to the cluster and rebalane in. In this case, no backfill tasks are scheduled for vbucket takeovers because the fresh node starts with the open checkpoint id 1 and the original node still has the open checkpoint id 1. Consequently, each vbucket takeover is completed without backfill but does not send any items from the open checkpoint 1 because it doesn't have any items. This causes data loss after rebalance. To resolve the above issue, we always schedule the backfill for the fresh client with empty data (i.e., checkpoint id 1). The better and more comprehensive solution would be to restore the open checkpoint as part of warmup, which we will provide soon. Change-Id: I4a7bc1ad400e6406ff2f900749514f2cabdc90c9 Reviewed-on: http://review.couchbase.org/14223 Reviewed-by: Michael Wiederhold <firstname.lastname@example.org> Tested-by: Chiyoung Seo <email@example.com> Reviewed-on: http://review.couchbase.org/15670 Reviewed-by: Chiyoung Seo <firstname.lastname@example.org>
- Loading branch information...
Showing with 19 additions and 4 deletions.