Skip to content

Commit

Permalink
Merge pull request #990 from marquiz/devel/nodefeature-ratelimit
Browse files Browse the repository at this point in the history
nfd-master: implement ratelimiter for nfd api updates
  • Loading branch information
k8s-ci-robot authored Dec 14, 2022
2 parents ee0807d + 740e3af commit 0193838
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions pkg/nfd-master/nfd-master.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,16 +259,34 @@ func (m *nfdMaster) runGrpcServer(errChan chan<- error) {

// nfdAPIUpdateHandler handles events from the nfd API controller.
func (m *nfdMaster) nfdAPIUpdateHandler() {
updateAll := false
updateNodes := make(map[string]struct{})
rateLimit := time.After(time.Second)
for {
select {
case <-m.nfdController.updateAllNodesChan:
if err := m.nfdAPIUpdateAllNodes(); err != nil {
klog.Error(err)
}
updateAll = true
case nodeName := <-m.nfdController.updateOneNodeChan:
if err := m.nfdAPIUpdateOneNode(nodeName); err != nil {
klog.Error(err)
updateNodes[nodeName] = struct{}{}
case <-rateLimit:
// Check what we need to do
// TODO: we might want to update multiple nodes in parallel
if updateAll {
if err := m.nfdAPIUpdateAllNodes(); err != nil {
klog.Error(err)
}
} else {
for nodeName := range updateNodes {
if err := m.nfdAPIUpdateOneNode(nodeName); err != nil {
klog.Error(err)
}
}
}

// Reset "work queue" and timer
updateAll = false
updateNodes = make(map[string]struct{})
rateLimit = time.After(time.Second)
}
}
}
Expand Down

0 comments on commit 0193838

Please sign in to comment.