Yes, pending ranges is range->list<InetAddress> mapping. Replication strategy dictates what nodes there are in the list and in which order, whereas replication factor dictates the length of the list. If we have two tables with same replication factor, it would be sufficient to calculate pending ranges once for maximum replication factor for that table, since pending ranges for smaller factor will be a subset of the other. An example to illustrate this:
Suppose we have TableA and TableB using same strategy, with replication factors 2 and 3 respectively. Suppose there are nodes NodeA, NodeB and NodeC in the cluster and NodeD boots "behind" NodeC. In this situation pending ranges for NodeD would be:
TableA: B-C, C-D
TableB: A-B, B-C, C-D
Notice that pending ranges for TableA is a subset of pending ranges for TableB. Instead of having pending ranges per table, it would be enough to have them per replication strategy in use. We could then just pick replication factor number of nodes from the beginning of the list.
Anyway, as said before, this is an optimization which can be done later if needed.
The patchset loogs OK to me.