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

@@ -1,6 +1,7 @@
package transport
import (
"context"
"encoding/json"
"fmt"
"net/http"
@@ -61,8 +62,8 @@ func (tr *FoundryTransport) HandleWebsocketRequest(msg *types.WsMessage) ([]byte
}
func (tr *FoundryTransport) ReceiveMessage(id int) ([]byte, error) {
// ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// defer cancel()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
for {
select {
@@ -71,14 +72,14 @@ func (tr *FoundryTransport) ReceiveMessage(id int) ([]byte, error) {
time.Sleep(5 * time.Microsecond)
continue
}
tr.CloseMsgChannel(id, 0)
tr.CloseMsgChannel(tr.ExchangeChan.Msgs[id], id, 0)
return msg, nil
// case <-ctx.Done():
// err := ctx.Err()
// if err != nil {
// return nil, err
// }
// return nil, ErrorTimeout
case <-ctx.Done():
err := ctx.Err()
if err != nil {
return nil, err
}
return nil, ErrorTimeout
default:
time.Sleep(5 * time.Microsecond)
}