Skip to content

Commit 759deaa

Browse files
committed
Use serve and pass listener to start
1 parent dca08e8 commit 759deaa

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

listener.patch

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/collector/internal/telemetryapi/listener.go b/collector/internal/telemetryapi/listener.go
2-
index 8499d4e..93ff0dc 100644
2+
index 8499d4e..62a6461 100644
33
--- a/collector/internal/telemetryapi/listener.go
44
+++ b/collector/internal/telemetryapi/listener.go
55
@@ -17,18 +17,32 @@ package telemetryapi
@@ -37,12 +37,12 @@ index 8499d4e..93ff0dc 100644
3737

3838
// Listener is used to listen to the Telemetry API
3939
type Listener struct {
40-
@@ -46,21 +60,44 @@ func NewListener(logger *zap.Logger) *Listener {
40+
@@ -46,26 +60,48 @@ func NewListener(logger *zap.Logger) *Listener {
4141
}
4242
}
4343

4444
-func listenOnAddress() string {
45-
+func (s *Listener) tryBindPort() (string, error) {
45+
+func (s *Listener) tryBindPort() (net.Listener, string, error) {
4646
+ for i := 0; i < maxRetries; i++ {
4747
+ port := getRandomPort()
4848
+ address := listenOnAddress(port)
@@ -54,13 +54,12 @@ index 8499d4e..93ff0dc 100644
5454
+ zap.String("address", address))
5555
+ continue
5656
+ }
57-
+ return "", err
57+
+ return nil, "", err
5858
+ }
59-
+ l.Close()
60-
+ return address, nil
59+
+ return l, address, nil
6160
+ }
6261
+
63-
+ return "", fmt.Errorf("failed to find available port after %d attempts", maxRetries)
62+
+ return nil, "", fmt.Errorf("failed to find available port after %d attempts", maxRetries)
6463
+}
6564
+
6665
+func listenOnAddress(port string) string {
@@ -80,10 +79,16 @@ index 8499d4e..93ff0dc 100644
8079
// Start the server in a goroutine where the log events will be sent
8180
func (s *Listener) Start() (string, error) {
8281
- address := listenOnAddress()
83-
+ address, err := s.tryBindPort()
82+
+ listener, address, err := s.tryBindPort()
8483
+ if err != nil {
8584
+ return "", fmt.Errorf("failed to find available port: %w", err)
8685
+ }
8786
s.logger.Info("Listening for requests", zap.String("address", address))
8887
s.httpServer = &http.Server{Addr: address}
8988
http.HandleFunc("/", s.httpHandler)
89+
go func() {
90+
- err := s.httpServer.ListenAndServe()
91+
+ err := s.httpServer.Serve(listener)
92+
if err != http.ErrServerClosed {
93+
s.logger.Error("Unexpected stop on HTTP Server", zap.Error(err))
94+
s.Shutdown()

0 commit comments

Comments
 (0)