fix race condition on 43 msg creation/closure. Speed up game object insert to db (from 10-12s to 1-2s)

This commit is contained in:
lbenedar
2026-04-27 17:29:15 +03:00
parent 4bb4b04004
commit 5a77a6ee0f
39 changed files with 261 additions and 146 deletions

View File

@@ -91,15 +91,23 @@ func (foundry *FoundryApi) ServeWebSocket() error {
}
go func() {
err = data.Action(foundry.Transport, &foundry.Status)
if err != nil {
wsChannels.Err() <- &types.FoundryError{Direction: types.ReaderCode, Err: err, Type: types.WebSocketCode}
errAction := data.Action(foundry.Transport, &foundry.Status)
if errAction != nil {
wsChannels.Err() <- &types.FoundryError{Direction: types.ReaderCode, Err: errAction, Type: types.WebSocketCode}
}
}()
case types.RespDataCode:
foundry.Transport.ExchangeChan.Msgs[message.Id] = make(chan []byte, 1)
foundry.Transport.ExchangeChan.Msgs[message.Id] <- []byte(message.MsgJson)
go foundry.Transport.CloseMsgChannel(message.Id, 5*time.Second)
tr := foundry.Transport
func() {
tr.ChanMutex.Lock()
defer tr.ChanMutex.Unlock()
tr.ExchangeChan.Msgs[message.Id] = make(chan []byte, 1)
tr.ExchangeChan.Msgs[message.Id] <- []byte(message.MsgJson)
go tr.CloseMsgChannel(tr.ExchangeChan.Msgs[message.Id], message.Id, 5*time.Second)
}()
default:
}
case err = <-wsChannels.Err():