Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Improve Lua runtime function registration handling. - Ensure authoritative match loggers correctly include only their own match identifier. - Improve handling of large tournament max size values. - Improve handling of channel removal on group leave/kick/ban. ### Fixed - Fix data returned by StreamUserList in JS runtime. Loading main.go +2 −2 Original line number Diff line number Diff line Loading @@ -164,8 +164,8 @@ func main() { pipeline := server.NewPipeline(logger, config, db, jsonpbMarshaler, jsonpbUnmarshaler, sessionRegistry, statusRegistry, matchRegistry, partyRegistry, matchmaker, tracker, router, runtime) statusHandler := server.NewLocalStatusHandler(logger, sessionRegistry, matchRegistry, tracker, metrics, config.GetName()) apiServer := server.StartApiServer(logger, startupLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, socialClient, leaderboardCache, leaderboardRankCache, sessionRegistry, sessionCache, statusRegistry, matchRegistry, matchmaker, tracker, router, metrics, pipeline, runtime) consoleServer := server.StartConsoleServer(logger, startupLogger, db, config, tracker, router, sessionCache, statusRegistry, statusHandler, runtimeInfo, matchRegistry, configWarnings, semver, leaderboardCache, leaderboardRankCache, apiServer, cookie) apiServer := server.StartApiServer(logger, startupLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, socialClient, leaderboardCache, leaderboardRankCache, sessionRegistry, sessionCache, statusRegistry, matchRegistry, matchmaker, tracker, router, streamManager, metrics, pipeline, runtime) consoleServer := server.StartConsoleServer(logger, startupLogger, db, config, tracker, router, streamManager, sessionCache, statusRegistry, statusHandler, runtimeInfo, matchRegistry, configWarnings, semver, leaderboardCache, leaderboardRankCache, apiServer, cookie) gaenabled := len(os.Getenv("NAKAMA_TELEMETRY")) < 1 const gacode = "UA-89792135-1" Loading server/api.go +3 −1 Original line number Diff line number Diff line Loading @@ -74,13 +74,14 @@ type ApiServer struct { matchRegistry MatchRegistry tracker Tracker router MessageRouter streamManager StreamManager metrics Metrics runtime *Runtime grpcServer *grpc.Server grpcGatewayServer *http.Server } func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, protojsonMarshaler *protojson.MarshalOptions, protojsonUnmarshaler *protojson.UnmarshalOptions, config Config, socialClient *social.Client, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, sessionRegistry SessionRegistry, sessionCache SessionCache, statusRegistry *StatusRegistry, matchRegistry MatchRegistry, matchmaker Matchmaker, tracker Tracker, router MessageRouter, metrics Metrics, pipeline *Pipeline, runtime *Runtime) *ApiServer { func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, protojsonMarshaler *protojson.MarshalOptions, protojsonUnmarshaler *protojson.UnmarshalOptions, config Config, socialClient *social.Client, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, sessionRegistry SessionRegistry, sessionCache SessionCache, statusRegistry *StatusRegistry, matchRegistry MatchRegistry, matchmaker Matchmaker, tracker Tracker, router MessageRouter, streamManager StreamManager, metrics Metrics, pipeline *Pipeline, runtime *Runtime) *ApiServer { var gatewayContextTimeoutMs string if config.GetSocket().IdleTimeoutMs > 500 { // Ensure the GRPC Gateway timeout is just under the idle timeout (if possible) to ensure it has priority. Loading Loading @@ -119,6 +120,7 @@ func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, p matchRegistry: matchRegistry, tracker: tracker, router: router, streamManager: streamManager, metrics: metrics, runtime: runtime, grpcServer: grpcServer, Loading server/api_group.go +3 −3 Original line number Diff line number Diff line Loading @@ -311,7 +311,7 @@ func (s *ApiServer) LeaveGroup(ctx context.Context, in *api.LeaveGroupRequest) ( return nil, status.Error(codes.InvalidArgument, "Group ID must be a valid ID.") } err = LeaveGroup(ctx, s.logger, s.db, s.router, groupID, userID, username) err = LeaveGroup(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, groupID, userID, username) if err != nil { if err == runtime.ErrGroupLastSuperadmin { return nil, status.Error(codes.InvalidArgument, "Cannot leave group when you are the last superadmin.") Loading Loading @@ -453,7 +453,7 @@ func (s *ApiServer) BanGroupUsers(ctx context.Context, in *api.BanGroupUsersRequ userIDs = append(userIDs, uid) } if err = BanGroupUsers(ctx, s.logger, s.db, s.router, userID, groupID, userIDs); err != nil { if err = BanGroupUsers(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, userID, groupID, userIDs); err != nil { if err == runtime.ErrGroupPermissionDenied { return nil, status.Error(codes.NotFound, "Group not found or permission denied.") } Loading Loading @@ -521,7 +521,7 @@ func (s *ApiServer) KickGroupUsers(ctx context.Context, in *api.KickGroupUsersRe userIDs = append(userIDs, uid) } if err = KickGroupUsers(ctx, s.logger, s.db, s.router, userID, groupID, userIDs); err != nil { if err = KickGroupUsers(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, userID, groupID, userIDs); err != nil { if err == runtime.ErrGroupPermissionDenied { return nil, status.Error(codes.NotFound, "Group not found or permission denied.") } Loading server/console.go +59 −57 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ type ConsoleServer struct { config Config tracker Tracker router MessageRouter StreamManager StreamManager sessionCache SessionCache statusRegistry *StatusRegistry matchRegistry MatchRegistry Loading @@ -152,7 +153,7 @@ type ConsoleServer struct { httpClient *http.Client } func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, config Config, tracker Tracker, router MessageRouter, sessionCache SessionCache, statusRegistry *StatusRegistry, statusHandler StatusHandler, runtimeInfo *RuntimeInfo, matchRegistry MatchRegistry, configWarnings map[string]string, serverVersion string, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, api *ApiServer, cookie string) *ConsoleServer { func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, config Config, tracker Tracker, router MessageRouter, streamManager StreamManager, sessionCache SessionCache, statusRegistry *StatusRegistry, statusHandler StatusHandler, runtimeInfo *RuntimeInfo, matchRegistry MatchRegistry, configWarnings map[string]string, serverVersion string, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, api *ApiServer, cookie string) *ConsoleServer { var gatewayContextTimeoutMs string if config.GetConsole().IdleTimeoutMs > 500 { // Ensure the GRPC Gateway timeout is just under the idle timeout (if possible) to ensure it has priority. Loading @@ -176,6 +177,7 @@ func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.D config: config, tracker: tracker, router: router, StreamManager: streamManager, sessionCache: sessionCache, statusRegistry: statusRegistry, matchRegistry: matchRegistry, Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Improve Lua runtime function registration handling. - Ensure authoritative match loggers correctly include only their own match identifier. - Improve handling of large tournament max size values. - Improve handling of channel removal on group leave/kick/ban. ### Fixed - Fix data returned by StreamUserList in JS runtime. Loading
main.go +2 −2 Original line number Diff line number Diff line Loading @@ -164,8 +164,8 @@ func main() { pipeline := server.NewPipeline(logger, config, db, jsonpbMarshaler, jsonpbUnmarshaler, sessionRegistry, statusRegistry, matchRegistry, partyRegistry, matchmaker, tracker, router, runtime) statusHandler := server.NewLocalStatusHandler(logger, sessionRegistry, matchRegistry, tracker, metrics, config.GetName()) apiServer := server.StartApiServer(logger, startupLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, socialClient, leaderboardCache, leaderboardRankCache, sessionRegistry, sessionCache, statusRegistry, matchRegistry, matchmaker, tracker, router, metrics, pipeline, runtime) consoleServer := server.StartConsoleServer(logger, startupLogger, db, config, tracker, router, sessionCache, statusRegistry, statusHandler, runtimeInfo, matchRegistry, configWarnings, semver, leaderboardCache, leaderboardRankCache, apiServer, cookie) apiServer := server.StartApiServer(logger, startupLogger, db, jsonpbMarshaler, jsonpbUnmarshaler, config, socialClient, leaderboardCache, leaderboardRankCache, sessionRegistry, sessionCache, statusRegistry, matchRegistry, matchmaker, tracker, router, streamManager, metrics, pipeline, runtime) consoleServer := server.StartConsoleServer(logger, startupLogger, db, config, tracker, router, streamManager, sessionCache, statusRegistry, statusHandler, runtimeInfo, matchRegistry, configWarnings, semver, leaderboardCache, leaderboardRankCache, apiServer, cookie) gaenabled := len(os.Getenv("NAKAMA_TELEMETRY")) < 1 const gacode = "UA-89792135-1" Loading
server/api.go +3 −1 Original line number Diff line number Diff line Loading @@ -74,13 +74,14 @@ type ApiServer struct { matchRegistry MatchRegistry tracker Tracker router MessageRouter streamManager StreamManager metrics Metrics runtime *Runtime grpcServer *grpc.Server grpcGatewayServer *http.Server } func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, protojsonMarshaler *protojson.MarshalOptions, protojsonUnmarshaler *protojson.UnmarshalOptions, config Config, socialClient *social.Client, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, sessionRegistry SessionRegistry, sessionCache SessionCache, statusRegistry *StatusRegistry, matchRegistry MatchRegistry, matchmaker Matchmaker, tracker Tracker, router MessageRouter, metrics Metrics, pipeline *Pipeline, runtime *Runtime) *ApiServer { func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, protojsonMarshaler *protojson.MarshalOptions, protojsonUnmarshaler *protojson.UnmarshalOptions, config Config, socialClient *social.Client, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, sessionRegistry SessionRegistry, sessionCache SessionCache, statusRegistry *StatusRegistry, matchRegistry MatchRegistry, matchmaker Matchmaker, tracker Tracker, router MessageRouter, streamManager StreamManager, metrics Metrics, pipeline *Pipeline, runtime *Runtime) *ApiServer { var gatewayContextTimeoutMs string if config.GetSocket().IdleTimeoutMs > 500 { // Ensure the GRPC Gateway timeout is just under the idle timeout (if possible) to ensure it has priority. Loading Loading @@ -119,6 +120,7 @@ func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, p matchRegistry: matchRegistry, tracker: tracker, router: router, streamManager: streamManager, metrics: metrics, runtime: runtime, grpcServer: grpcServer, Loading
server/api_group.go +3 −3 Original line number Diff line number Diff line Loading @@ -311,7 +311,7 @@ func (s *ApiServer) LeaveGroup(ctx context.Context, in *api.LeaveGroupRequest) ( return nil, status.Error(codes.InvalidArgument, "Group ID must be a valid ID.") } err = LeaveGroup(ctx, s.logger, s.db, s.router, groupID, userID, username) err = LeaveGroup(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, groupID, userID, username) if err != nil { if err == runtime.ErrGroupLastSuperadmin { return nil, status.Error(codes.InvalidArgument, "Cannot leave group when you are the last superadmin.") Loading Loading @@ -453,7 +453,7 @@ func (s *ApiServer) BanGroupUsers(ctx context.Context, in *api.BanGroupUsersRequ userIDs = append(userIDs, uid) } if err = BanGroupUsers(ctx, s.logger, s.db, s.router, userID, groupID, userIDs); err != nil { if err = BanGroupUsers(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, userID, groupID, userIDs); err != nil { if err == runtime.ErrGroupPermissionDenied { return nil, status.Error(codes.NotFound, "Group not found or permission denied.") } Loading Loading @@ -521,7 +521,7 @@ func (s *ApiServer) KickGroupUsers(ctx context.Context, in *api.KickGroupUsersRe userIDs = append(userIDs, uid) } if err = KickGroupUsers(ctx, s.logger, s.db, s.router, userID, groupID, userIDs); err != nil { if err = KickGroupUsers(ctx, s.logger, s.db, s.tracker, s.router, s.streamManager, userID, groupID, userIDs); err != nil { if err == runtime.ErrGroupPermissionDenied { return nil, status.Error(codes.NotFound, "Group not found or permission denied.") } Loading
server/console.go +59 −57 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ type ConsoleServer struct { config Config tracker Tracker router MessageRouter StreamManager StreamManager sessionCache SessionCache statusRegistry *StatusRegistry matchRegistry MatchRegistry Loading @@ -152,7 +153,7 @@ type ConsoleServer struct { httpClient *http.Client } func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, config Config, tracker Tracker, router MessageRouter, sessionCache SessionCache, statusRegistry *StatusRegistry, statusHandler StatusHandler, runtimeInfo *RuntimeInfo, matchRegistry MatchRegistry, configWarnings map[string]string, serverVersion string, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, api *ApiServer, cookie string) *ConsoleServer { func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, config Config, tracker Tracker, router MessageRouter, streamManager StreamManager, sessionCache SessionCache, statusRegistry *StatusRegistry, statusHandler StatusHandler, runtimeInfo *RuntimeInfo, matchRegistry MatchRegistry, configWarnings map[string]string, serverVersion string, leaderboardCache LeaderboardCache, leaderboardRankCache LeaderboardRankCache, api *ApiServer, cookie string) *ConsoleServer { var gatewayContextTimeoutMs string if config.GetConsole().IdleTimeoutMs > 500 { // Ensure the GRPC Gateway timeout is just under the idle timeout (if possible) to ensure it has priority. Loading @@ -176,6 +177,7 @@ func StartConsoleServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.D config: config, tracker: tracker, router: router, StreamManager: streamManager, sessionCache: sessionCache, statusRegistry: statusRegistry, matchRegistry: matchRegistry, Loading