-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Crash when attempting to remove user from an organization #10744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
For non single user, we recommand not to use sqlite. |
|
Can you send some logs? If you are comfortable sifting yourself, you can look for errors around when the user is removed. |
Here's the log of the event, from when I pressed the "Remove" button until I was forced to shut down the gitea service.
|
Let me know if there's anything else I can help with. Thanks. |
@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. |
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. |
This is probably already mitigated on master as we now use begin immediate for sqlite |
@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 @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
|
I had the same problem. |
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: AFTER: |
So right before you took the I see a couple of
I was expecting some Gitea code below #6. It doesn't seem that symbols are stripped off from the executable (otherwise other code like 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? |
"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? |
@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. |
@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. |
@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 ... |
@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. 👍 |
Should be fixed by #11438 |
[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
The text was updated successfully, but these errors were encountered: