Skip to content

Commit

Permalink
WIP: ws error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
dwasse committed Oct 1, 2024
1 parent 65ddc92 commit 16b3a5b
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
3 changes: 2 additions & 1 deletion services/rfq/api/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,9 @@ func (c *clientImpl) processWebsocket(ctx context.Context, conn *websocket.Conn,
return nil
case msg, ok := <-reqChan:
if !ok {
return nil
return fmt.Errorf("error reading from reqChan: %w", ctx.Err())
}
fmt.Printf("sending message to websocket: %+v\n", msg)
err := conn.WriteJSON(msg)
if err != nil {
return fmt.Errorf("error sending message to websocket: %w", err)
Expand Down
12 changes: 10 additions & 2 deletions services/rfq/api/rest/ws.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ func (c *wsClient) Run(ctx context.Context) (err error) {
}
case <-c.pingTicker.C:
// ping timed out, close the connection
_, span := c.handler.Tracer().Start(ctx, "pingTimeout")
defer metrics.EndSpanWithErr(span, err)
cancel()
}
}
Expand Down Expand Up @@ -176,6 +178,14 @@ func (c *wsClient) sendRelayerRequest(ctx context.Context, req *model.WsRFQReque
// handleRelayerMessage handles messages from the relayer.
// An error returned will result in the websocket connection being closed.
func (c *wsClient) handleRelayerMessage(ctx context.Context, msg []byte) (err error) {
_, span := c.handler.Tracer().Start(ctx, "handleRelayerMessage", trace.WithAttributes(
attribute.String("relayer_address", c.relayerAddr),
attribute.String("message", string(msg)),
))
defer func() {
metrics.EndSpanWithErr(span, err)
}()

var rfqMsg model.ActiveRFQMessage
err = json.Unmarshal(msg, &rfqMsg)
if err != nil {
Expand Down Expand Up @@ -205,8 +215,6 @@ func (c *wsClient) handleRelayerMessage(ctx context.Context, msg []byte) (err er
case SendQuoteOp:
err = c.handleSendQuote(ctx, rfqMsg.Content)
logger.Errorf("error handling send quote: %v", err)
case PongOp:
c.lastPing = time.Now()
default:
logger.Errorf("received unexpected operation from relayer: %s", rfqMsg.Op)
return nil
Expand Down
2 changes: 1 addition & 1 deletion services/rfq/relayer/quoter/quoter.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ func (m *Manager) SubscribeActiveRFQ(ctx context.Context) (err error) {
return nil
case msg, ok := <-respChan:
if !ok {
return nil
return fmt.Errorf("error subscribing to active quotes: %w", ctx.Err())
}
if msg == nil {
continue
Expand Down

0 comments on commit 16b3a5b

Please sign in to comment.