GitHub PushEvent at 2014-08-22 12:38:24
Repository: swift
Actor: openstack-gerrit
Payload: {"shas":[["6d77c379bd8f51e520896967cdcfc9add3d934a4","f16bed56189e249fe4ca8ed10a1ecae60e8ceac0@swiftstack.com","Let admins add a region without melting their cluster\n\nPrior to this commit, swift-ring-builder would place partitions on\ndevices by first going for maximal dispersion and breaking ties with\ndevice weight. This commit flips the order so that device weight\ntrumps dispersion.\n\nNote: if your ring can be balanced, you won't see a behavior\nchange. It's only when device weights and maximal-dispersion come into\nconflict that this commit changes anything.\n\nExample: a cluster with two regions. Region 1 has a combined weight of\n1000, while region 2 has a combined weight of only 400. The ring has 3\nreplicas and 2^16 partitions.\n\nPrior to this commit, the balance would look like so:\n\n  Region 1: 2 * 2^16 partitions\n  Region 2: 2^16 partitions\n\nAfter this commit, the balance will be:\n\n  Region 1: 10/14 * 2^16 partitions  (more than before)\n  Region 2: 4/14 * 2^16 partitions  (fewer than before)\n\nOne consequence of this is that some partitions will not have a\nreplica in region 2, since it's not big enough to hold all of them.\n\nThis way, a cluster operator can add a new region to a single-region\ncluster in a gradual fashion so as not to destroy their WAN link with\nreplication traffic. As device weights are increased in the second\nregion, more replicas will shift over to it. Once its weight is half\nthat of the first region's, every partition will have a replica there.\n\nDocImpact\n\nChange-Id: I945abcc4a2917bb12be554b640f7507dd23cd0da","Samuel Merritt",true],["4758eaac3f303a3e994f6acd943ef8c2f92624b2","d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","Merge \"Let admins add a region without melting their cluster\"","Jenkins",true]],"size":2,"ref":"refs/heads/master","head":"4758eaac3f303a3e994f6acd943ef8c2f92624b2"}