Skip to content

Commit 0b635b9

Browse files
committed
handle errors when setting write dl
1 parent 2f5ce65 commit 0b635b9

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

dbos/conductor.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"log/slog"
8+
"math"
89
"net"
910
"net/url"
1011
"os"
@@ -141,7 +142,9 @@ func (c *Conductor) closeConn() {
141142
}
142143

143144
if c.conn != nil {
144-
c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block
145+
if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil {
146+
c.logger.Warn("Failed to set write deadline", "error", err)
147+
}
145148
err := c.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "shutting down"))
146149
if err != nil {
147150
c.logger.Warn("Failed to send close message", "error", err)
@@ -299,11 +302,15 @@ func (c *Conductor) ping() error {
299302
c.writeMu.Lock()
300303
defer c.writeMu.Unlock()
301304

302-
c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block
305+
if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil {
306+
c.logger.Warn("Failed to set write deadline for ping", "error", err)
307+
}
303308
if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
304309
return fmt.Errorf("failed to send ping: %w", err)
305310
}
306-
c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline
311+
if err := c.conn.SetWriteDeadline(time.Time{}); err != nil {
312+
c.logger.Warn("Failed to clear write deadline", "error", err)
313+
}
307314

308315
return nil
309316
}
@@ -571,12 +578,16 @@ func (c *Conductor) sendResponse(response any, responseType string) error {
571578
c.writeMu.Lock()
572579
defer c.writeMu.Unlock()
573580

574-
c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block
581+
if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil {
582+
c.logger.Warn("Failed to set write deadline", "type", responseType, "error", err)
583+
}
575584
if err := c.conn.WriteMessage(websocket.TextMessage, data); err != nil {
576585
c.logger.Error("Failed to send response", "type", responseType, "error", err)
577586
return fmt.Errorf("failed to send message: %w", err)
578587
}
579-
c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline
588+
if err := c.conn.SetWriteDeadline(time.Time{}); err != nil {
589+
c.logger.Warn("Failed to clear write deadline", "type", responseType, "error", err)
590+
}
580591

581592
return nil
582593
}
@@ -972,12 +983,16 @@ func (c *Conductor) handleUnknownMessageType(requestID string, msgType messageTy
972983
c.writeMu.Lock()
973984
defer c.writeMu.Unlock()
974985

975-
c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block
986+
if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil {
987+
c.logger.Warn("Failed to set write deadline for error response", "error", err)
988+
}
976989
if err := c.conn.WriteMessage(websocket.TextMessage, data); err != nil {
977990
c.logger.Error("Failed to send error response", "error", err)
978991
return fmt.Errorf("failed to send message: %w", err)
979992
}
980-
c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline
993+
if err := c.conn.SetWriteDeadline(time.Time{}); err != nil {
994+
c.logger.Warn("Failed to clear write deadline for error response", "error", err)
995+
}
981996

982997
return nil
983998
}

0 commit comments

Comments
 (0)