@@ -47,6 +47,7 @@ import (
47
47
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvstorage"
48
48
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvstorage/snaprecv"
49
49
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/liveness"
50
+ loadmonitor "github.com/cockroachdb/cockroach/pkg/kv/kvserver/load"
50
51
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/logstore"
51
52
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/multiqueue"
52
53
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/raftentry"
@@ -897,27 +898,28 @@ type Store struct {
897
898
raftLogQueue * raftLogQueue // Raft log truncation queue
898
899
// Carries out truncations proposed by the raft log queue, and "replicated"
899
900
// via raft, when they are safe. Created in Store.Start.
900
- raftTruncator * raftLogTruncator
901
- raftSnapshotQueue * raftSnapshotQueue // Raft repair queue
902
- tsMaintenanceQueue * timeSeriesMaintenanceQueue // Time series maintenance queue
903
- scanner * replicaScanner // Replica scanner
904
- consistencyQueue * consistencyQueue // Replica consistency check queue
905
- consistencyLimiter * quotapool.RateLimiter // Rate limits consistency checks
906
- metrics * StoreMetrics
907
- intentResolver * intentresolver.IntentResolver
908
- recoveryMgr txnrecovery.Manager
909
- storeLiveness storeliveness.Fabric
910
- syncWaiters []* logstore.SyncWaiterLoop
911
- raftEntryCache * raftentry.Cache
912
- limiters batcheval.Limiters
913
- txnWaitMetrics * txnwait.Metrics
914
- raftMetrics * raft.Metrics
915
- sstSnapshotStorage snaprecv.SSTSnapshotStorage
916
- protectedtsReader spanconfig.ProtectedTSReader
917
- ctSender * sidetransport.Sender
918
- policyRefresher * policyrefresher.PolicyRefresher
919
- storeGossip * StoreGossip
920
- rebalanceObjManager * RebalanceObjectiveManager
901
+ raftTruncator * raftLogTruncator
902
+ raftSnapshotQueue * raftSnapshotQueue // Raft repair queue
903
+ tsMaintenanceQueue * timeSeriesMaintenanceQueue // Time series maintenance queue
904
+ scanner * replicaScanner // Replica scanner
905
+ consistencyQueue * consistencyQueue // Replica consistency check queue
906
+ consistencyLimiter * quotapool.RateLimiter // Rate limits consistency checks
907
+ metrics * StoreMetrics
908
+ intentResolver * intentresolver.IntentResolver
909
+ recoveryMgr txnrecovery.Manager
910
+ storeLiveness storeliveness.Fabric
911
+ syncWaiters []* logstore.SyncWaiterLoop
912
+ raftEntryCache * raftentry.Cache
913
+ limiters batcheval.Limiters
914
+ txnWaitMetrics * txnwait.Metrics
915
+ raftMetrics * raft.Metrics
916
+ sstSnapshotStorage snaprecv.SSTSnapshotStorage
917
+ protectedtsReader spanconfig.ProtectedTSReader
918
+ ctSender * sidetransport.Sender
919
+ policyRefresher * policyrefresher.PolicyRefresher
920
+ nodeCapacityProvider * loadmonitor.NodeCapacityProvider
921
+ storeGossip * StoreGossip
922
+ rebalanceObjManager * RebalanceObjectiveManager
921
923
922
924
// kvflowRangeControllerFactory is used for replication AC (flow control) V2
923
925
// to create new range controllers which mediate the flow of requests to
@@ -1189,6 +1191,10 @@ type StoreConfig struct {
1189
1191
// leaseholder replicas. One per node.
1190
1192
PolicyRefresher * policyrefresher.PolicyRefresher
1191
1193
1194
+ // NodeCapacityProvider is used to provide node capacity information for
1195
+ // store.Descriptor.
1196
+ NodeCapacityProvider * loadmonitor.NodeCapacityProvider
1197
+
1192
1198
// TimeSeriesDataStore is an interface used by the store's time series
1193
1199
// maintenance queue to dispatch individual maintenance tasks.
1194
1200
TimeSeriesDataStore TimeSeriesDataStore
@@ -1485,6 +1491,7 @@ func NewStore(
1485
1491
metrics : newStoreMetrics (cfg .HistogramWindowInterval ),
1486
1492
ctSender : cfg .ClosedTimestampSender ,
1487
1493
policyRefresher : cfg .PolicyRefresher ,
1494
+ nodeCapacityProvider : cfg .NodeCapacityProvider ,
1488
1495
ioThresholds : & iot ,
1489
1496
rangeFeedSlowClosedTimestampNudge : singleflight .NewGroup ("rangfeed-ct-nudge" , "range" ),
1490
1497
}
@@ -1726,9 +1733,13 @@ func NewStore(
1726
1733
updateSystemConfigUpdateQueueLimits )
1727
1734
1728
1735
if s .cfg .Gossip != nil {
1729
- // TODO(wenyihu6): pass nodeCapacityProvider properly in production code.
1730
- s .storeGossip = NewStoreGossip (cfg .Gossip ,
1731
- s , cfg .TestingKnobs .GossipTestingKnobs , & cfg .Settings .SV , timeutil.DefaultTimeSource {}, nil )
1736
+ s .storeGossip = NewStoreGossip (
1737
+ cfg .Gossip ,
1738
+ s ,
1739
+ cfg .TestingKnobs .GossipTestingKnobs ,
1740
+ & cfg .Settings .SV ,
1741
+ timeutil.DefaultTimeSource {},
1742
+ )
1732
1743
1733
1744
// Add range scanner and configure with queues.
1734
1745
s .scanner = newReplicaScanner (
@@ -3276,11 +3287,12 @@ func (s *Store) Descriptor(ctx context.Context, useCached bool) (*roachpb.StoreD
3276
3287
3277
3288
// Initialize the store descriptor.
3278
3289
return & roachpb.StoreDescriptor {
3279
- StoreID : s .Ident .StoreID ,
3280
- Attrs : s .Attrs (),
3281
- Node : * s .nodeDesc ,
3282
- Capacity : capacity ,
3283
- Properties : s .Properties (),
3290
+ StoreID : s .Ident .StoreID ,
3291
+ Attrs : s .Attrs (),
3292
+ Node : * s .nodeDesc ,
3293
+ Capacity : capacity ,
3294
+ Properties : s .Properties (),
3295
+ NodeCapacity : s .nodeCapacityProvider .GetNodeCapacity (useCached ),
3284
3296
}, nil
3285
3297
}
3286
3298
0 commit comments