If, when starting up for the first time, the host only has 1 token but num_tokens is configured differently, then this will trigger a migration process:
- The host will assign itself num_tokens tokens in its own range
- The new tokens will be gossiped
This will allow a rolling migration where N new hosts are bootstrapped into the cluster (with num_tokens set appropriately) and then the N old nodes are decommissioned. This will result in even distribution of the data among the new nodes with randomly assigned tokens.
Edit0: Appended patch information.
|01_migration_path||01_migration_path.patch||Migrate from one token to many|
Note: These are branches managed with TopGit. If you are applying the patch output manually, you will either need to filter the TopGit metadata files (i.e. wget -O - <url> | filterdiff -x*.topdeps -x*.topmsg | patch -p1), or remove them afterward (rm .topmsg .topdeps).