mirror of
https://github.com/minio/minio.git
synced 2025-01-11 15:03:22 -05:00
fix: only show active/available ARNs in server startup banner (#9392)
This commit is contained in:
parent
1b38aed05f
commit
322385f1b6
@ -1457,7 +1457,7 @@ func (a adminAPIHandlers) ServerInfoHandler(w http.ResponseWriter, r *http.Reque
|
|||||||
Mode: mode,
|
Mode: mode,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
Region: globalServerRegion,
|
Region: globalServerRegion,
|
||||||
SQSARN: globalNotificationSys.GetARNList(),
|
SQSARN: globalNotificationSys.GetARNList(false),
|
||||||
DeploymentID: globalDeploymentID,
|
DeploymentID: globalDeploymentID,
|
||||||
Buckets: buckets,
|
Buckets: buckets,
|
||||||
Objects: objects,
|
Objects: objects,
|
||||||
|
@ -102,8 +102,10 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
var targetsOffline bool
|
var targetsOffline bool
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// Automatically close all connections to targets when an error occur
|
// Automatically close all connections to targets when an error occur.
|
||||||
if err != nil {
|
// Close all the targets if returnOnTargetError is set
|
||||||
|
// Else, close only the failed targets
|
||||||
|
if err != nil && returnOnTargetError {
|
||||||
for _, t := range targetList.TargetMap() {
|
for _, t := range targetList.TargetMap() {
|
||||||
_ = t.Close()
|
_ = t.Close()
|
||||||
}
|
}
|
||||||
@ -174,6 +176,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
@ -194,6 +197,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -214,6 +218,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -234,6 +239,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -253,6 +259,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -272,6 +279,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -291,6 +299,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -310,6 +319,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -329,6 +339,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
@ -348,6 +359,7 @@ func FetchRegisteredTargets(cfg config.Config, doneCh <-chan struct{}, transport
|
|||||||
if returnOnTargetError {
|
if returnOnTargetError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
_ = newTarget.Close()
|
||||||
}
|
}
|
||||||
if err = targetList.Add(newTarget); err != nil {
|
if err = targetList.Add(newTarget); err != nil {
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
|
@ -56,18 +56,23 @@ type NotificationSys struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetARNList - returns available ARNs.
|
// GetARNList - returns available ARNs.
|
||||||
func (sys *NotificationSys) GetARNList() []string {
|
func (sys *NotificationSys) GetARNList(onlyActive bool) []string {
|
||||||
arns := []string{}
|
arns := []string{}
|
||||||
if sys == nil {
|
if sys == nil {
|
||||||
return arns
|
return arns
|
||||||
}
|
}
|
||||||
region := globalServerRegion
|
region := globalServerRegion
|
||||||
for _, targetID := range sys.targetList.List() {
|
for targetID, target := range sys.targetList.TargetMap() {
|
||||||
// httpclient target is part of ListenBucketNotification
|
// httpclient target is part of ListenBucketNotification
|
||||||
// which doesn't need to be listed as part of the ARN list
|
// which doesn't need to be listed as part of the ARN list
|
||||||
// This list is only meant for external targets, filter
|
// This list is only meant for external targets, filter
|
||||||
// this out pro-actively.
|
// this out pro-actively.
|
||||||
if !strings.HasPrefix(targetID.ID, "httpclient+") {
|
if !strings.HasPrefix(targetID.ID, "httpclient+") {
|
||||||
|
if onlyActive && !target.HasQueueStore() {
|
||||||
|
if _, err := target.IsActive(); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
arns = append(arns, targetID.ToARN(region).String())
|
arns = append(arns, targetID.ToARN(region).String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,11 @@ func (target *PeerRESTClientTarget) IsActive() (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - No-Op. Added for interface compatibility
|
||||||
|
func (target PeerRESTClientTarget) HasQueueStore() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Save - Sends event directly without persisting.
|
// Save - Sends event directly without persisting.
|
||||||
func (target *PeerRESTClientTarget) Save(eventData event.Event) error {
|
func (target *PeerRESTClientTarget) Save(eventData event.Event) error {
|
||||||
return target.send(eventData)
|
return target.send(eventData)
|
||||||
|
@ -59,7 +59,7 @@ func getServerInfo() (*ServerInfoData, error) {
|
|||||||
Version: Version,
|
Version: Version,
|
||||||
CommitID: CommitID,
|
CommitID: CommitID,
|
||||||
DeploymentID: globalDeploymentID,
|
DeploymentID: globalDeploymentID,
|
||||||
SQSARN: globalNotificationSys.GetARNList(),
|
SQSARN: globalNotificationSys.GetARNList(false),
|
||||||
Region: globalServerRegion,
|
Region: globalServerRegion,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
|
@ -202,7 +202,7 @@ func printEventNotifiers() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
arns := globalNotificationSys.GetARNList()
|
arns := globalNotificationSys.GetARNList(true)
|
||||||
if len(arns) == 0 {
|
if len(arns) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -132,6 +132,11 @@ func (target *AMQPTarget) IsActive() (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *AMQPTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
func (target *AMQPTarget) channel() (*amqp.Channel, error) {
|
func (target *AMQPTarget) channel() (*amqp.Channel, error) {
|
||||||
var err error
|
var err error
|
||||||
var conn *amqp.Connection
|
var conn *amqp.Connection
|
||||||
|
@ -91,6 +91,11 @@ func (target *ElasticsearchTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *ElasticsearchTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *ElasticsearchTarget) IsActive() (bool, error) {
|
func (target *ElasticsearchTarget) IsActive() (bool, error) {
|
||||||
if dErr := target.args.URL.DialHTTP(nil); dErr != nil {
|
if dErr := target.args.URL.DialHTTP(nil); dErr != nil {
|
||||||
|
@ -49,6 +49,11 @@ func (target *HTTPClientTarget) IsActive() (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - No-Op. Added for interface compatibility
|
||||||
|
func (target *HTTPClientTarget) HasQueueStore() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (target *HTTPClientTarget) start() {
|
func (target *HTTPClientTarget) start() {
|
||||||
go func() {
|
go func() {
|
||||||
defer func() {
|
defer func() {
|
||||||
|
@ -133,6 +133,11 @@ func (target *KafkaTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *KafkaTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *KafkaTarget) IsActive() (bool, error) {
|
func (target *KafkaTarget) IsActive() (bool, error) {
|
||||||
if !target.args.pingBrokers() {
|
if !target.args.pingBrokers() {
|
||||||
|
@ -118,6 +118,11 @@ func (target *MQTTTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *MQTTTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *MQTTTarget) IsActive() (bool, error) {
|
func (target *MQTTTarget) IsActive() (bool, error) {
|
||||||
if !target.client.IsConnectionOpen() {
|
if !target.client.IsConnectionOpen() {
|
||||||
|
@ -183,6 +183,11 @@ func (target *MySQLTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *MySQLTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *MySQLTarget) IsActive() (bool, error) {
|
func (target *MySQLTarget) IsActive() (bool, error) {
|
||||||
if target.db == nil {
|
if target.db == nil {
|
||||||
|
@ -207,6 +207,11 @@ func (target *NATSTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *NATSTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *NATSTarget) IsActive() (bool, error) {
|
func (target *NATSTarget) IsActive() (bool, error) {
|
||||||
var connErr error
|
var connErr error
|
||||||
|
@ -99,6 +99,11 @@ func (target *NSQTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *NSQTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *NSQTarget) IsActive() (bool, error) {
|
func (target *NSQTarget) IsActive() (bool, error) {
|
||||||
if target.producer != nil {
|
if target.producer != nil {
|
||||||
|
@ -182,6 +182,11 @@ func (target *PostgreSQLTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *PostgreSQLTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *PostgreSQLTarget) IsActive() (bool, error) {
|
func (target *PostgreSQLTarget) IsActive() (bool, error) {
|
||||||
if target.db == nil {
|
if target.db == nil {
|
||||||
|
@ -128,6 +128,11 @@ func (target *RedisTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *RedisTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *RedisTarget) IsActive() (bool, error) {
|
func (target *RedisTarget) IsActive() (bool, error) {
|
||||||
conn := target.pool.Get()
|
conn := target.pool.Get()
|
||||||
|
@ -87,6 +87,11 @@ func (target WebhookTarget) ID() event.TargetID {
|
|||||||
return target.id
|
return target.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - Checks if the queueStore has been configured for the target
|
||||||
|
func (target *WebhookTarget) HasQueueStore() bool {
|
||||||
|
return target.store != nil
|
||||||
|
}
|
||||||
|
|
||||||
// IsActive - Return true if target is up and active
|
// IsActive - Return true if target is up and active
|
||||||
func (target *WebhookTarget) IsActive() (bool, error) {
|
func (target *WebhookTarget) IsActive() (bool, error) {
|
||||||
u, pErr := xnet.ParseHTTPURL(target.args.Endpoint.String())
|
u, pErr := xnet.ParseHTTPURL(target.args.Endpoint.String())
|
||||||
|
@ -28,6 +28,7 @@ type Target interface {
|
|||||||
Save(Event) error
|
Save(Event) error
|
||||||
Send(string) error
|
Send(string) error
|
||||||
Close() error
|
Close() error
|
||||||
|
HasQueueStore() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// TargetList - holds list of targets indexed by target ID.
|
// TargetList - holds list of targets indexed by target ID.
|
||||||
|
@ -71,6 +71,11 @@ func (target ExampleTarget) IsActive() (bool, error) {
|
|||||||
return false, errors.New("not connected to target server/service")
|
return false, errors.New("not connected to target server/service")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasQueueStore - No-Op. Added for interface compatibility
|
||||||
|
func (target ExampleTarget) HasQueueStore() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func TestTargetListAdd(t *testing.T) {
|
func TestTargetListAdd(t *testing.T) {
|
||||||
targetListCase1 := NewTargetList()
|
targetListCase1 := NewTargetList()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user