readiness returns error quickly if any of the set is down (#9662)

This PR adds a new configuration parameter which allows readiness
check to respond within 10secs, this can be reduced to a lower value
if necessary using 

```
mc admin config set api ready_deadline=5s
```

 or

```
export MINIO_API_READY_DEADLINE=5s
```
This commit is contained in:
Krishna Srinivas
2020-05-23 17:38:39 -07:00
committed by GitHub
parent 3f6d624c7b
commit 7d19ab9f62
17 changed files with 266 additions and 118 deletions
+23
View File
@@ -1163,6 +1163,29 @@ func (sys *NotificationSys) ServerInfo() []madmin.ServerProperties {
return reply
}
// GetLocalDiskIDs - return disk ids of the local disks of the peers.
func (sys *NotificationSys) GetLocalDiskIDs() []string {
var diskIDs []string
var mu sync.Mutex
var wg sync.WaitGroup
for _, client := range sys.peerClients {
if client == nil {
continue
}
wg.Add(1)
go func(client *peerRESTClient) {
defer wg.Done()
ids := client.GetLocalDiskIDs()
mu.Lock()
diskIDs = append(diskIDs, ids...)
mu.Unlock()
}(client)
}
wg.Wait()
return diskIDs
}
// NewNotificationSys - creates new notification system object.
func NewNotificationSys(endpoints EndpointZones) *NotificationSys {
// bucketRulesMap/bucketRemoteTargetRulesMap are initialized by NotificationSys.Init()