Skip to content

Negative team members count #36894

@jenni-miller

Description

@jenni-miller

Description

For teams that have a configured LDAP sync, the team members count can be negative.

We use Server SQL DB. Table [dbo].[team] shows negative number in column [num_members]

Logs show that it is trying to delete and readd a user that should not be deleted:

10:32:59 services/org/team.go:350:syncGroupsToTeamsCached.RemoveTeamMember.1() [W] [Slow SQL Query] DELETE FROM [team_user] WHERE [org_id]=? AND [team_id]=? AND [uid]=? [33 20 19] - 5.0488183s

10:33:07 models/db/context.go:149:WithTx() [W] [Slow SQL Query] UPDATE [team] SET [num_members] = [num_members] + ? FROM [team] WHERE [id]=? [1 20] - 7.4509668s
10:33:07 models/db/context.go:177:Insert() [W] [Slow SQL Query] INSERT INTO [team_user] ([org_id],[team_id],[uid]) OUTPUT Inserted.[id] VALUES (?,?,?) [33 20 19] - 7.471007s
2026/03/13 10:33:07 .../source_group_sync.go:104:syncGroupsToTeamsCached() [E] group sync: Could not add user to team: mssql: Eine Zeile mit doppeltem Schlüssel kann in das dbo.team_user-Objekt mit dem eindeutigen UQE_team_user_s-Index nicht eingefügt werden. Der doppelte Schlüsselwert ist (20, 19).
2026/03/13 10:33:07 services/auth/basic.go:136:(*Basic).Verify() [E] UserSignIn: could not sync[add] user groups: mssql: Eine Zeile mit doppeltem Schlüssel kann in das dbo.team_user-Objekt mit dem eindeutigen UQE_team_user_s-Index nicht eingefügt werden. Der doppelte Schlüsselwert ist (20, 19).
2026/03/13 10:33:07 routers/web/web.go:121:Routes.webAuth.10() [E] Failed to verify user: could not sync[add] user groups: mssql: Eine Zeile mit doppeltem Schlüssel kann in das dbo.team_user-Objekt mit dem eindeutigen UQE_team_user_s-Index nicht eingefügt werden. Der doppelte Schlüsselwert ist (20, 19).

Later it logs a deadlock:

10:33:04 services/auth/basic.go:136:(*Basic).Verify() [E] UserSignIn: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 51) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:33:04 routers/web/web.go:121:Routes.webAuth.10() [E] Failed to verify user: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 51) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:33:07 .../source_group_sync.go:109:syncGroupsToTeamsCached() [E] group sync: Could not remove user from team: mssql: Die Transaktion (Prozess-ID 55) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:33:07 services/auth/basic.go:136:(*Basic).Verify() [E] UserSignIn: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 55) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:33:07 routers/web/web.go:121:Routes.webAuth.10() [E] Failed to verify user: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 55) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:46:51 .../source_group_sync.go:109:syncGroupsToTeamsCached() [E] group sync: Could not remove user from team: mssql: Die Transaktion (Prozess-ID 67) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:46:51 services/auth/basic.go:136:(*Basic).Verify() [E] UserSignIn: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 67) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
10:46:51 routers/web/web.go:121:Routes.webAuth.10() [E] Failed to verify user: could not sync[remove] user groups: mssql: Die Transaktion (Prozess-ID 67) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.

Gitea Version

1.25.4

Can you reproduce the bug on the Gitea demo site?

No

Log Gist

No response

Screenshots

Image Image

Git Version

2.52.0.windows.1

Operating System

Windows

How are you running Gitea?

Running Gitea as a windows service

Database

MSSQL

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions