mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-13 19:37:47 -05:00
Crash when attempting to remove user from an organization #5070
Closed
opened 2025-11-02 06:13:15 -06:00 by GiteaMirror
·
18 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#5070
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @gilesorr on GitHub (Mar 16, 2020).
[x]):Description
Further information: running in Digital Ocean, smallest instance size available (1M memory, has previously been beautifully stable even under reasonable load).
We have a small organization (16 users). Two coders recently departed, so I went into the GUI (as an administrator) to remove them. One was fine, but when I attempted to remove the other it said that the account couldn't be removed while the user was a member of an organization. I went to one of the two organizations they were a part of, went to the user list (/org/<organization_name>/members) and clicked "Remove" by the user name. The interface locked up - and in fact I eventually had to stop the gitea service (which takes a full 60 seconds). I restarted the service, tried to remove the user from the other organization they are a member of, had exactly the same lock-up (and solution).
I upgraded from 1.11 to 1.11.3 and the behaviour is identical. I've discovered that I can disable the account instead of removing the user so that's a partial work-around, but this seems to be a significant bug.
Without admin access to try.gitea.io I can't replicate there.
I'll consider sending logs if you ask for them: I'm not rushing to do so because it reveals more personal info than I'm comfortable with. If you request logs, I may obfuscate them which may make them less useful ...
Otherwise ... massively impressed by this software. Thanks.
Screenshots
@lunny commented on GitHub (Mar 17, 2020):
For non single user, we recommand not to use sqlite.
@gilesorr commented on GitHub (Mar 19, 2020):
@jolheiser commented on GitHub (Mar 19, 2020):
Can you send some logs? If you are comfortable sifting yourself, you can look for errors around when the user is removed.
No need to send the full log, but as much as you are comfortable with would be potentially beneficial.
@gilesorr commented on GitHub (Mar 19, 2020):
Here's the log of the event, from when I pressed the "Remove" button until I was forced to shut down the gitea service.
@gilesorr commented on GitHub (Mar 20, 2020):
Let me know if there's anything else I can help with. Thanks.
@lunny commented on GitHub (Mar 20, 2020):
@gilesorr I don't mean we will not try to fix the problem.
Because sqlite itself has some limitation when many go routines read/write the tables at the same time. For a peronsal use, it should be fast. But when there are more users, it will be slow if some users use it at the same time.
@gilesorr commented on GitHub (Mar 20, 2020):
As mentioned, we have only a small number of users - and so far, gitea hasn't been heavily used. Duly noted though: when we start using it more, I'll keep an eye out for slow-downs and will consider a move to PostgreSQL if that happens. Thanks.
@zeripath commented on GitHub (Mar 24, 2020):
This is probably already mitigated on master as we now use begin immediate for sqlite
@guillep2k commented on GitHub (Mar 24, 2020):
@zeripath that was my first thought, but it looks like the change is already present on 1.11.3:
https://github.com/go-gitea/gitea/blob/v1.11.3/modules/setting/database.go#L127
I'm thinking on it... I think it's possible there's still some scenarios that can't be covered by this if two different goroutines open multiple transactions to perform one operation (e.g. implicit transactions to perform
SELECToperations and later on an explicit transaction forINSERT, etc.). I can't picture that scenario myself, though.@gilesorr To gather more info, it would be great if you could create a dump of Gitea's process at the moment it's frozen (you'd need
goanddelveinstalled for that):@edoger commented on GitHub (Mar 25, 2020):
I had the same problem.
@gilesorr commented on GitHub (Mar 25, 2020):
Not a Go expert, please accept my apologies if this has been done incorrectly.
I created two delve dumps - I thought I did three, but one got lost. The first is before the deliberately-caused crash ("51 goroutines"), the second is a couple minutes after ("71 goroutines"). The one I lost was about 30 seconds after the crash: it said "58 goroutines" (that's all I've got for you on that one). I tried a minute later again, and it was still at 71 so I killed the process ...
BEFORE:
typescript.before.txt
AFTER:
typescript.after.txt
@guillep2k commented on GitHub (Mar 26, 2020):
So right before you took the
typescript.after.txtsnapshot your browser was still waiting for an answer?I see a couple of
unlock_notifywait calls (which are SQLite locks), but the stack trace on them doesn't say much about the caller functions. 🤔I was expecting some Gitea code below #6. It doesn't seem that symbols are stripped off from the executable (otherwise other code like
graceful/server.gowould not show up).Perhaps your second snapshot had more useful info. 😞
If you can get another snapshot, it would be great. Otherwise, it would be nice to identify if there's anything "special" about those users you want to delete so we can reproduce the problem. By "special" I mean anything that is not included in our automated tests (maybe it's the user has issues? or PRs? or belongs to another team?).
Can you create a new user and try deleting it? See if you can identify the culprit event?
@gilesorr commented on GitHub (Mar 26, 2020):
"So right before you took the typescript.after.txt snapshot your browser was still waiting for an answer?" Yes.
If the binaries aren't stripped, blame https://dl.gitea.io/gitea/ ... that's where I fetch them from.
Unfortunately, this is a live instance - which means I have to pick my times to do things that might crash it.
I changed the password of the account in question and logged in as them. The person in question:
@edoger - if you can, perhaps try running the same debugging on your server? It would probably help. Are you using SQLite?
@edoger commented on GitHub (Mar 27, 2020):
@gilesorr I use sqlite. I added an administrator account to the organization and it will crash when I delete it, or when I log in to the new administrator account and click the leave organization button, it will also crash.
@guillep2k commented on GitHub (Mar 27, 2020):
@gilesorr you mean you remove them from the teams they belong, right? Because there's no "delete from organization option" that I'm aware of.
@gilesorr commented on GitHub (Mar 27, 2020):
@guillep2k Go to the Organization page. On the right, it says "People" and then further right of that there's a count of those people. Click on the count. That page is /org/<org_name>/members , and you have a big red "Remove" button beside each member. That's what I'm talking about.
I added a new user, then added them to just one organization: exact same problem as the previous user (who is in two organizations), crash on attempt to remove from the organization.
Since you pointed out the distinction, I tried removing the offending user from the Team rather than the Organization. And all is just fine and I was able to remove the users entirely - finally.
Please note that this all started because when I attempted to delete a user, a big warning came up: "This user is a member of an organization. Remove the user from any organizations first." It doesn't say "remove the user from any teams first." So I tried to remove them from the organization(s).
I'm hoping that this distinction is the problem and will lead to a fix. If you still want/need more debug output, get back to me next week ...
@guillep2k commented on GitHub (Mar 28, 2020):
@gilesorr Thank you for your patience! I'm glad the problem is fixed on your side. I think we've got enough info now to fix it on ours. 👍
@lunny commented on GitHub (Jul 12, 2022):
Should be fixed by #11438