@@ -73,6 +73,7 @@ type TopologyWatcher struct {
73
73
refreshKnownTablets bool
74
74
getTablets func (tw * TopologyWatcher ) ([]* topodata.TabletAlias , error )
75
75
sem chan int
76
+ tabletDiscoverySem chan int
76
77
ctx context.Context
77
78
cancelFunc context.CancelFunc
78
79
// wg keeps track of all launched Go routines.
@@ -94,7 +95,7 @@ type TopologyWatcher struct {
94
95
95
96
// NewTopologyWatcher returns a TopologyWatcher that monitors all
96
97
// the tablets in a cell, and starts refreshing.
97
- func NewTopologyWatcher (ctx context.Context , topoServer * topo.Server , tr TabletRecorder , filter TabletFilter , cell string , refreshInterval time.Duration , refreshKnownTablets bool , topoReadConcurrency int , getTablets func (tw * TopologyWatcher ) ([]* topodata.TabletAlias , error )) * TopologyWatcher {
98
+ func NewTopologyWatcher (ctx context.Context , topoServer * topo.Server , tr TabletRecorder , filter TabletFilter , cell string , refreshInterval time.Duration , refreshKnownTablets bool , topoReadConcurrency , tabletDiscoveryConcurrency int , getTablets func (tw * TopologyWatcher ) ([]* topodata.TabletAlias , error )) * TopologyWatcher {
98
99
tw := & TopologyWatcher {
99
100
topoServer : topoServer ,
100
101
tabletRecorder : tr ,
@@ -104,6 +105,7 @@ func NewTopologyWatcher(ctx context.Context, topoServer *topo.Server, tr TabletR
104
105
refreshKnownTablets : refreshKnownTablets ,
105
106
getTablets : getTablets ,
106
107
sem : make (chan int , topoReadConcurrency ),
108
+ tabletDiscoverySem : make (chan int , tabletDiscoveryConcurrency ),
107
109
tablets : make (map [string ]* tabletInfo ),
108
110
}
109
111
tw .firstLoadChan = make (chan struct {})
@@ -116,8 +118,8 @@ func NewTopologyWatcher(ctx context.Context, topoServer *topo.Server, tr TabletR
116
118
117
119
// NewCellTabletsWatcher returns a TopologyWatcher that monitors all
118
120
// the tablets in a cell, and starts refreshing.
119
- func NewCellTabletsWatcher (ctx context.Context , topoServer * topo.Server , tr TabletRecorder , f TabletFilter , cell string , refreshInterval time.Duration , refreshKnownTablets bool , topoReadConcurrency int ) * TopologyWatcher {
120
- return NewTopologyWatcher (ctx , topoServer , tr , f , cell , refreshInterval , refreshKnownTablets , topoReadConcurrency , func (tw * TopologyWatcher ) ([]* topodata.TabletAlias , error ) {
121
+ func NewCellTabletsWatcher (ctx context.Context , topoServer * topo.Server , tr TabletRecorder , f TabletFilter , cell string , refreshInterval time.Duration , refreshKnownTablets bool , topoReadConcurrency , tabletDiscoveryConcurrency int ) * TopologyWatcher {
122
+ return NewTopologyWatcher (ctx , topoServer , tr , f , cell , refreshInterval , refreshKnownTablets , topoReadConcurrency , tabletDiscoveryConcurrency , func (tw * TopologyWatcher ) ([]* topodata.TabletAlias , error ) {
121
123
return tw .topoServer .GetTabletAliasesByCell (ctx , tw .cell )
122
124
})
123
125
}
@@ -230,11 +232,11 @@ func (tw *TopologyWatcher) loadTablets() {
230
232
topologyWatcherOperations .Add (topologyWatcherOpReplaceTablet , 1 )
231
233
}
232
234
} else {
233
- tw .sem <- 1 // Wait for active queue to drain.
235
+ tw .tabletDiscoverySem <- 1 // Wait for active queue to drain.
234
236
// This is a new tablet record, let's add it to the healthcheck
235
237
tw .tabletRecorder .AddTablet (newVal .tablet )
236
238
topologyWatcherOperations .Add (topologyWatcherOpAddTablet , 1 )
237
- <- tw .sem // Done; enable next request to run
239
+ <- tw .tabletDiscoverySem // Done; enable next request to run
238
240
}
239
241
}
240
242
0 commit comments