From 8a9b9832fdb561e1fd0483ad4aef15303d185421 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 17 Apr 2023 15:45:01 -0700 Subject: [PATCH] add Dial timeout for Kafka broker pings (#17044) --- internal/event/target/kafka.go | 7 ++++--- internal/logger/target/kafka/kafka.go | 17 ++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/internal/event/target/kafka.go b/internal/event/target/kafka.go index 9894a42d4..9e24b8805 100644 --- a/internal/event/target/kafka.go +++ b/internal/event/target/kafka.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2021 MinIO, Inc. +// Copyright (c) 2015-2023 MinIO, Inc. // // This file is part of MinIO Object Storage stack // @@ -28,6 +28,7 @@ import ( "net/url" "os" "path/filepath" + "time" "github.com/minio/minio/internal/event" "github.com/minio/minio/internal/logger" @@ -268,9 +269,9 @@ func (target *KafkaTarget) Close() error { // Check if atleast one broker in cluster is active func (k KafkaArgs) pingBrokers() bool { + d := net.Dialer{Timeout: 60 * time.Second} for _, broker := range k.Brokers { - _, dErr := net.Dial("tcp", broker.String()) - if dErr == nil { + if _, err := d.Dial("tcp", broker.String()); err == nil { return true } } diff --git a/internal/logger/target/kafka/kafka.go b/internal/logger/target/kafka/kafka.go index 15f60f127..c80a72bb8 100644 --- a/internal/logger/target/kafka/kafka.go +++ b/internal/logger/target/kafka/kafka.go @@ -26,6 +26,7 @@ import ( "net" "sync" "sync/atomic" + "time" "github.com/minio/pkg/logger/message/audit" @@ -148,18 +149,16 @@ type Config struct { } // Check if atleast one broker in cluster is active -func (k Config) pingBrokers() error { - var err error +func (k Config) pingBrokers() (err error) { + d := net.Dialer{Timeout: 60 * time.Second} + for _, broker := range k.Brokers { - _, err1 := net.Dial("tcp", broker.String()) - if err1 != nil { - if err == nil { - // Set first error - err = err1 - } + _, err = d.Dial("tcp", broker.String()) + if err != nil { + return err } } - return err + return nil } // Stats returns the target statistics.