mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Merge pull request #26705 from nebril/issue-26704
Automatic merge from submit-queue Make discovery summarizer call servers in parallel fixes #26704
This commit is contained in:
commit
9b5696b7b4
@ -102,20 +102,39 @@ func (ds *discoverySummarizerServer) indexHandler(w http.ResponseWriter, r *http
|
||||
func (ds *discoverySummarizerServer) summarizeGroupVersionsHandler(path string) func(http.ResponseWriter, *http.Request) {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var apiGroupList *unversioned.APIGroupList
|
||||
// TODO: We can cache and parallelize the calls to all servers.
|
||||
// TODO: We can cache calls to all servers.
|
||||
groups := make(chan *unversioned.APIGroupList)
|
||||
errorChannel := make(chan error)
|
||||
for _, serverAddress := range ds.groupVersionPaths[path] {
|
||||
groupList, err := ds.getAPIGroupList(serverAddress + path)
|
||||
if err != nil {
|
||||
addr := serverAddress
|
||||
go func(groups chan *unversioned.APIGroupList, error_channel chan error) {
|
||||
groupList, err := ds.getAPIGroupList(addr + path)
|
||||
if err != nil {
|
||||
errorChannel <- err
|
||||
return
|
||||
}
|
||||
groups <- groupList
|
||||
return
|
||||
}(groups, errorChannel)
|
||||
}
|
||||
|
||||
var groupList *unversioned.APIGroupList
|
||||
var err error
|
||||
for range ds.groupVersionPaths[path] {
|
||||
select {
|
||||
case groupList = <-groups:
|
||||
if apiGroupList == nil {
|
||||
apiGroupList = &unversioned.APIGroupList{}
|
||||
*apiGroupList = *groupList
|
||||
} else {
|
||||
apiGroupList.Groups = append(apiGroupList.Groups, groupList.Groups...)
|
||||
}
|
||||
case err = <-errorChannel:
|
||||
ds.writeErr(http.StatusBadGateway, err, w)
|
||||
return
|
||||
}
|
||||
if apiGroupList == nil {
|
||||
apiGroupList = &unversioned.APIGroupList{}
|
||||
*apiGroupList = *groupList
|
||||
} else {
|
||||
apiGroupList.Groups = append(apiGroupList.Groups, groupList.Groups...)
|
||||
}
|
||||
}
|
||||
|
||||
ds.writeRawJSON(http.StatusOK, *apiGroupList, w)
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user