Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
None
-
1. cluster has at least one empty key-space
2. one node be added into cluster to do bootstrap
-
Low
Description
when use multiple key-spaces, and one key-space has no SSTable, then bootstrap may not work right.
Say nodes A, B, C, D have key spaces "KS1" and "KS2", KS1 is empty, now add empty node E into cluster.
Suppose E decide to drag data from A and B(bootstrap source), E will send range to A and B, and A, B will scan all key-spaces they got and send ack to E, which contains list of key-space name(StreamContextManager.StreamContext),
when E get ack from A and B, it scan this list, but when encounter first empty key-space, it will stop and remove node from bootstrap sources list:
StreamInitiateVerbHandler.doVerb:
......
if (streamContexts.length == 0 && StorageService.instance().isBootstrapMode())
......
If list of bootstrap sources is empty, E will finish bootstrapping
So, the result is: E get nothing from source A, B, even KS2 has lots of data.