Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Ensure deterministic ordering for storage listing operations. - Ensure deterministic ordering for leaderboard scores where both score and subscore are identical. - Consistent default database address between migration command and main server startup. - Ensure deterministic ordering for group listings without filters. ### Fixed - Handle updates during leaderboard schedule reset window. Loading server/core_group.go +6 −6 Original line number Diff line number Diff line Loading @@ -1336,16 +1336,16 @@ func ListGroups(ctx context.Context, logger *zap.Logger, db *sql.DB, name string SELECT id, creator_id, name, description, avatar_url, state, edge_count, lang_tag, max_count, metadata, create_time, update_time FROM groups WHERE disable_time = '1970-01-01 00:00:00 UTC' ORDER BY lang_tag ASC, edge_count ASC, id ASC LIMIT $1` if cursor != nil { params = append(params, cursor.Lang, cursor.EdgeCount, cursor.ID) query = ` SELECT id, creator_id, name, description, avatar_url, state, edge_count, lang_tag, max_count, metadata, create_time, update_time FROM groups WHERE (disable_time = '1970-01-01 00:00:00 UTC') AND ((lang_tag, edge_count, id) > ($2, $3, $4)) WHERE disable_time = '1970-01-01 00:00:00 UTC' AND (lang_tag, edge_count, id) > ($2, $3, $4) ORDER BY lang_tag ASC, edge_count ASC, id ASC LIMIT $1` } } else { Loading tests/runtime_test.go +8 −8 Original line number Diff line number Diff line Loading @@ -321,7 +321,7 @@ nakama.register_rpc(test.printWorld, "helloworld")`, } payload := "Hello World" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err.Error()) } Loading Loading @@ -399,7 +399,7 @@ nakama.register_rpc(test, "test")`, t.Fatal("Expected RPC function to be registered") } result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", "") result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", "") if err != nil { t.Fatal(err) } Loading Loading @@ -430,7 +430,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -461,7 +461,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -492,7 +492,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -523,7 +523,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -580,7 +580,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -613,7 +613,7 @@ nakama.register_rpc(test, "test")`, payload := "something_to_encrypt" hash, _ := bcrypt.GenerateFromPassword([]byte(payload), bcrypt.DefaultCost) result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", string(hash)) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", string(hash)) if err != nil { t.Fatal(err) } Loading tests/util.go +5 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,8 @@ type DummyMessageRouter struct{} func (d *DummyMessageRouter) SendDeferred(*zap.Logger, []*server.DeferredMessage) { panic("unused") } func (d *DummyMessageRouter) SendToPresenceIDs(*zap.Logger, []*server.PresenceID, *rtapi.Envelope, bool) {} func (d *DummyMessageRouter) SendToPresenceIDs(*zap.Logger, []*server.PresenceID, *rtapi.Envelope, bool) { } func (d *DummyMessageRouter) SendToStream(*zap.Logger, server.PresenceStream, *rtapi.Envelope, bool) {} type DummySession struct { Loading @@ -76,6 +77,9 @@ func (d *DummySession) Username() string { return "" } func (d *DummySession) SetUsername(string) {} func (d *DummySession) Vars() map[string]string { return nil } func (d *DummySession) Expiry() int64 { return int64(0) } Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Ensure deterministic ordering for storage listing operations. - Ensure deterministic ordering for leaderboard scores where both score and subscore are identical. - Consistent default database address between migration command and main server startup. - Ensure deterministic ordering for group listings without filters. ### Fixed - Handle updates during leaderboard schedule reset window. Loading
server/core_group.go +6 −6 Original line number Diff line number Diff line Loading @@ -1336,16 +1336,16 @@ func ListGroups(ctx context.Context, logger *zap.Logger, db *sql.DB, name string SELECT id, creator_id, name, description, avatar_url, state, edge_count, lang_tag, max_count, metadata, create_time, update_time FROM groups WHERE disable_time = '1970-01-01 00:00:00 UTC' ORDER BY lang_tag ASC, edge_count ASC, id ASC LIMIT $1` if cursor != nil { params = append(params, cursor.Lang, cursor.EdgeCount, cursor.ID) query = ` SELECT id, creator_id, name, description, avatar_url, state, edge_count, lang_tag, max_count, metadata, create_time, update_time FROM groups WHERE (disable_time = '1970-01-01 00:00:00 UTC') AND ((lang_tag, edge_count, id) > ($2, $3, $4)) WHERE disable_time = '1970-01-01 00:00:00 UTC' AND (lang_tag, edge_count, id) > ($2, $3, $4) ORDER BY lang_tag ASC, edge_count ASC, id ASC LIMIT $1` } } else { Loading
tests/runtime_test.go +8 −8 Original line number Diff line number Diff line Loading @@ -321,7 +321,7 @@ nakama.register_rpc(test.printWorld, "helloworld")`, } payload := "Hello World" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err.Error()) } Loading Loading @@ -399,7 +399,7 @@ nakama.register_rpc(test, "test")`, t.Fatal("Expected RPC function to be registered") } result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", "") result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", "") if err != nil { t.Fatal(err) } Loading Loading @@ -430,7 +430,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -461,7 +461,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -492,7 +492,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -523,7 +523,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -580,7 +580,7 @@ nakama.register_rpc(test, "test")`, } payload := "{\"key\":\"value\"}" result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", payload) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", payload) if err != nil { t.Fatal(err) } Loading Loading @@ -613,7 +613,7 @@ nakama.register_rpc(test, "test")`, payload := "something_to_encrypt" hash, _ := bcrypt.GenerateFromPassword([]byte(payload), bcrypt.DefaultCost) result, err, _ := fn(context.Background(), nil, "", "", 0, "", "", "", string(hash)) result, err, _ := fn(context.Background(), nil, "", "", nil, 0, "", "", "", string(hash)) if err != nil { t.Fatal(err) } Loading
tests/util.go +5 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,8 @@ type DummyMessageRouter struct{} func (d *DummyMessageRouter) SendDeferred(*zap.Logger, []*server.DeferredMessage) { panic("unused") } func (d *DummyMessageRouter) SendToPresenceIDs(*zap.Logger, []*server.PresenceID, *rtapi.Envelope, bool) {} func (d *DummyMessageRouter) SendToPresenceIDs(*zap.Logger, []*server.PresenceID, *rtapi.Envelope, bool) { } func (d *DummyMessageRouter) SendToStream(*zap.Logger, server.PresenceStream, *rtapi.Envelope, bool) {} type DummySession struct { Loading @@ -76,6 +77,9 @@ func (d *DummySession) Username() string { return "" } func (d *DummySession) SetUsername(string) {} func (d *DummySession) Vars() map[string]string { return nil } func (d *DummySession) Expiry() int64 { return int64(0) } Loading