Skip to content

Commit 3f8df3e

Browse files
wenyihu6tbg
authored andcommitted
asim: move SetNodeLocality & s.SetNodeCPURateCapacity to AddNode
Previously, s.SetNodeLocality and s.SetNodeCPURateCapacity were called after s.AddNode, making it easy to miss populating these fields. This commit updates s.AddNode to take CPU rate capacity and node capacity explicitly as arguments.
1 parent 8d61e62 commit 3f8df3e

File tree

6 files changed

+24
-27
lines changed

6 files changed

+24
-27
lines changed

pkg/kv/kvserver/asim/event/mutation_event.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,14 @@ func (se SetSpanConfigEvent) String() string {
124124

125125
func (ae AddNodeEvent) Func() EventFunc {
126126
return MutationFunc(func(ctx context.Context, s state.State) {
127-
node := s.AddNode()
128-
// TDOO(wenyihu6): should we always require node cpu capacity and locality
129-
// string as part of the input
130-
s.SetNodeCPURateCapacity(node.NodeID(), config.DefaultNodeCPURateCapacityNanos)
127+
// TDOO(wenyihu6): should we change AddNode to take in
128+
var locality roachpb.Locality
131129
if ae.LocalityString != "" {
132-
var locality roachpb.Locality
133130
if err := locality.Set(ae.LocalityString); err != nil {
134131
panic(fmt.Sprintf("unable to set node locality %s", err.Error()))
135132
}
136-
s.SetNodeLocality(node.NodeID(), locality)
137133
}
134+
node := s.AddNode(config.DefaultNodeCPURateCapacityNanos, locality)
138135
for i := 0; i < ae.NumStores; i++ {
139136
if _, ok := s.AddStore(node.NodeID()); !ok {
140137
panic(fmt.Sprintf("adding store to node=%d failed", node))

pkg/kv/kvserver/asim/state/config_loader.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,7 @@ func LoadClusterInfo(c ClusterInfo, settings *config.SimulationSettings) State {
375375
Tiers: []roachpb.Tier{regionTier, zoneTier},
376376
}
377377
for i := 0; i < z.NodeCount; i++ {
378-
node := s.AddNode()
379-
s.SetNodeLocality(node.NodeID(), locality)
380-
s.SetNodeCPURateCapacity(node.NodeID(), c.NodeCPURateCapacityNanos)
378+
node := s.AddNode(c.NodeCPURateCapacityNanos, locality)
381379
storesRequired := z.StoresPerNode
382380
if storesRequired < 1 {
383381
panic(fmt.Sprintf("storesPerNode cannot be less than one but found %v", storesRequired))

pkg/kv/kvserver/asim/state/config_loader_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,11 @@ func TestLoadRangesInfo(t *testing.T) {
158158
t.Run(tc.desc, func(t *testing.T) {
159159
settings := config.DefaultSimulationSettings()
160160
state := NewState(settings)
161-
_, ok := state.AddStore(state.AddNode().NodeID())
161+
_, ok := state.AddStore(state.AddNode(-1, roachpb.Locality{}).NodeID())
162162
require.True(t, ok)
163-
_, ok = state.AddStore(state.AddNode().NodeID())
163+
_, ok = state.AddStore(state.AddNode(-1, roachpb.Locality{}).NodeID())
164164
require.True(t, ok)
165-
_, ok = state.AddStore(state.AddNode().NodeID())
165+
_, ok = state.AddStore(state.AddNode(-1, roachpb.Locality{}).NodeID())
166166
require.True(t, ok)
167167

168168
if tc.expectPanic {

pkg/kv/kvserver/asim/state/impl.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,9 +419,9 @@ func (s *state) Replicas(storeID StoreID) []Replica {
419419
return repls
420420
}
421421

422-
// AddNode modifies the state to include one additional node. This cannot
423-
// fail. The new Node is returned.
424-
func (s *state) AddNode() Node {
422+
// AddNode modifies the state to include one additional node. This cannot fail.
423+
// The new Node is returned.
424+
func (s *state) AddNode(nodeCPUCapacity int64, locality roachpb.Locality) Node {
425425
s.nodeSeqGen++
426426
nodeID := s.nodeSeqGen
427427
mmAllocator := mmaprototype.NewAllocatorState(s.clock, rand.New(rand.NewSource(s.settings.Seed)))
@@ -437,6 +437,8 @@ func (s *state) AddNode() Node {
437437
}
438438
s.nodes[nodeID] = node
439439
s.SetNodeLiveness(nodeID, livenesspb.NodeLivenessStatus_LIVE)
440+
s.SetNodeLocality(nodeID, locality)
441+
s.SetNodeCPURateCapacity(nodeID, nodeCPUCapacity)
440442
return node
441443
}
442444
func (s *state) SetNodeLocality(nodeID NodeID, locality roachpb.Locality) {

pkg/kv/kvserver/asim/state/state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ type State interface {
8585
LeaseholderStore(RangeID) (Store, bool)
8686
// AddNode modifies the state to include one additional node. This cannot
8787
// fail. The new Node is returned.
88-
AddNode() Node
88+
AddNode(nodeCPUCapacity int64, locality roachpb.Locality) Node
8989
// SetNodeLocality sets the locality of the node with ID NodeID to be the
9090
// locality given.
9191
SetNodeLocality(NodeID, roachpb.Locality)

pkg/kv/kvserver/asim/state/state_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525

2626
func TestStateUpdates(t *testing.T) {
2727
s := NewState(config.DefaultSimulationSettings())
28-
node := s.AddNode()
28+
node := s.AddNode(-1, roachpb.Locality{})
2929
s.AddStore(node.NodeID())
3030
require.Equal(t, 1, len(s.Nodes()))
3131
require.Equal(t, 1, len(s.Stores()))
@@ -39,7 +39,7 @@ func TestRangeSplit(t *testing.T) {
3939
k1 := MinKey
4040
r1 := s.rangeFor(k1)
4141

42-
n1 := s.AddNode()
42+
n1 := s.AddNode(-1, roachpb.Locality{})
4343
s1, _ := s.AddStore(n1.NodeID())
4444

4545
repl1, _ := s.AddReplica(r1.RangeID(), s1.StoreID(), roachpb.VOTER_FULL)
@@ -126,7 +126,7 @@ func TestValidTransfer(t *testing.T) {
126126

127127
_, r1, _ := s.SplitRange(1)
128128

129-
n1 := s.AddNode()
129+
n1 := s.AddNode(-1, roachpb.Locality{})
130130
s1, _ := s.AddStore(n1.NodeID())
131131
s2, _ := s.AddStore(n1.NodeID())
132132

@@ -159,7 +159,7 @@ func TestTransferLease(t *testing.T) {
159159

160160
_, r1, _ := s.SplitRange(1)
161161

162-
n1 := s.AddNode()
162+
n1 := s.AddNode(-1, roachpb.Locality{})
163163
s1, _ := s.AddStore(n1.NodeID())
164164
s2, _ := s.AddStore(n1.NodeID())
165165

@@ -187,7 +187,7 @@ func TestValidReplicaTarget(t *testing.T) {
187187

188188
_, r1, _ := s.SplitRange(1)
189189

190-
n1 := s.AddNode()
190+
n1 := s.AddNode(-1, roachpb.Locality{})
191191
s1, _ := s.AddStore(n1.NodeID())
192192
s2, _ := s.AddStore(n1.NodeID())
193193

@@ -227,7 +227,7 @@ func TestAddReplica(t *testing.T) {
227227
_, r1, _ := s.SplitRange(1)
228228
_, r2, _ := s.SplitRange(2)
229229

230-
n1 := s.AddNode()
230+
n1 := s.AddNode(-1, roachpb.Locality{})
231231
s1, _ := s.AddStore(n1.NodeID())
232232
s2, _ := s.AddStore(n1.NodeID())
233233

@@ -249,7 +249,7 @@ func TestAddReplica(t *testing.T) {
249249
func TestWorkloadApply(t *testing.T) {
250250
s := NewState(config.DefaultSimulationSettings())
251251

252-
n1 := s.AddNode()
252+
n1 := s.AddNode(-1, roachpb.Locality{})
253253
s1, _ := s.AddStore(n1.NodeID())
254254
s2, _ := s.AddStore(n1.NodeID())
255255
s3, _ := s.AddStore(n1.NodeID())
@@ -299,9 +299,9 @@ func TestReplicaLoadRangeUsageInfo(t *testing.T) {
299299
s := NewState(settings)
300300
start := settings.StartTime
301301

302-
n1 := s.AddNode()
303-
n2 := s.AddNode()
304-
n3 := s.AddNode()
302+
n1 := s.AddNode(-1, roachpb.Locality{})
303+
n2 := s.AddNode(-1, roachpb.Locality{})
304+
n3 := s.AddNode(-1, roachpb.Locality{})
305305
k1 := Key(100)
306306
qps := 1000
307307
s1, _ := s.AddStore(n1.NodeID())
@@ -532,7 +532,7 @@ func TestSetSpanConfig(t *testing.T) {
532532

533533
setupState := func() State {
534534
s := newState(settings)
535-
node := s.AddNode()
535+
node := s.AddNode(-1, roachpb.Locality{})
536536
_, ok := s.AddStore(node.NodeID())
537537
require.True(t, ok)
538538

0 commit comments

Comments
 (0)