diff --git a/node/pkg/dal/api/controller.go b/node/pkg/dal/api/controller.go index 7907ac54f..f2b9b5d0c 100644 --- a/node/pkg/dal/api/controller.go +++ b/node/pkg/dal/api/controller.go @@ -94,6 +94,8 @@ func (c *Controller) broadcastDataForSymbol(symbol string) { func (c *Controller) castSubmissionData(data *dalcommon.OutgoingSubmissionData, symbol *string) { for conn := range c.clients { if _, ok := c.clients[conn][*symbol]; ok { + c.mu.Lock() + defer c.mu.Unlock() if err := conn.WriteJSON(*data); err != nil { log.Error().Err(err).Msg("failed to write message") delete(c.clients, conn) diff --git a/node/pkg/dal/api/types.go b/node/pkg/dal/api/types.go index 5a071aabd..862c3302a 100644 --- a/node/pkg/dal/api/types.go +++ b/node/pkg/dal/api/types.go @@ -1,6 +1,8 @@ package api import ( + "sync" + "bisonai.com/orakl/node/pkg/common/types" "bisonai.com/orakl/node/pkg/dal/collector" dalcommon "bisonai.com/orakl/node/pkg/dal/common" @@ -20,4 +22,6 @@ type Controller struct { register chan *websocket.Conn unregister chan *websocket.Conn broadcast map[string]chan dalcommon.OutgoingSubmissionData + + mu sync.RWMutex }