mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-15 20:52:52 -05:00
Internal error 500 on pull requests or other forms of submission #3106
Closed
opened 2025-11-02 05:00:55 -06:00 by GiteaMirror
·
12 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
No Label
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#3106
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 @nicovince on GitHub (Mar 26, 2019).
Description
Sometimes, when I submit a form from a pull request creation or update or from a ticket creation or in order to close it, I get an internal error 500.
@nicovince commented on GitHub (Mar 26, 2019):
I updated the OS to alpine 3.9 and I still randomly encounter the issue.
@nicovince commented on GitHub (Mar 26, 2019):
By the way the version of sqlite installed on the server have no incidence because sqlite is embedded in the go application. (sqlite has been removed from the server and gitea keeps on working).
@jolheiser commented on GitHub (Mar 26, 2019):
I believe the issue here is likely because our notification services are running in goroutines and thus async.
I'm not an expert with channels, but I think we would need to make sure the channel is drained before continuing (which sort of defeats the purpose of async...) in order to avoid an instance where a notifier is still looping/creating notifications when Gitea attempts to get a count using the same table, which it does when it fills the context.
Notifier consumes and starts making DB transactions async:
82e08a3364/modules/notification/ui/ui.go (L37-L46)Gitea tries to serve next page, context attempts to load notifications:
801843b011/routers/user/notification.go (L21-L38)Attempts to count from notification table, which may be locked by the notifications?
b34996a629/routers/routes/routes.go (L193)Or am I missing somewhere that handles this?
@zeripath commented on GitHub (Mar 26, 2019):
Deadlocks like this are the definition of random events. They are the original Heisenbug.
Ok, so I have a few questions:
Now, unlike most of the deadlocks we've experienced, I suspect this might be a different type. This might actually be the case where two processes are trying to write to the database. It might be that we have to make the Gitea serv completely a client of the main process.
This is probably an example of where sqlite is not appropriate for installations with more than a few users.
@zeripath commented on GitHub (Mar 26, 2019):
Hmm. I think I have completely misread the issue. For some reason I was thinking this might have something to do with when actually pushing!
Instead this might just be another deadlock bug. I suspect that @jolheiser is on the right track and that the problem lies in models.CreateOrUpdateIssueNotifications. I wonder if that is somehow causing a deadlock.
This is where the XORM logs would be helpful.
@lunny commented on GitHub (Mar 27, 2019):
This is not related with pull request, it's a random event. I think @typeless had sent a PR to fix the sqlite lock issue. @nicovince how did you get gitea? I think the gitea version should be with all the build tags.
@typeless commented on GitHub (Mar 27, 2019):
@nicovince Did you built Gitea from source? Please check if Gitea is built with
sqlite_unlock_notify.@nicovince commented on GitHub (Mar 27, 2019):
gitea-all-logs-500-anon.txt
Here is some more logs (http.log, gitea.log, xorm.log) which happens around a 500.
To give you an idea of my setup :
During installation sqlite seemed a good candidate and it has the advantage of being easy to make a backup of the VM running gitea (no need to dump the database beforehand).
In the future we may switch to another database (postgre probably) but it would require the resolution of #6090
Let me know if you need more informations.
@nicovince commented on GitHub (Mar 27, 2019):
@lunny @typeless Regarding how i got gitea, it is a package from alpine : https://git.alpinelinux.org/aports/tree/community/gitea/APKBUILD?id=ef3cd926643f971359265dd121a05ccb96733968 and it looks like the sqlite_unlock_notify flag might be missing.
From the site admin/config page i have the following :
Gitea Version : 1.7.3 built with go1.11.5 : tidb, sqlite
@lunny commented on GitHub (Mar 27, 2019):
@nicovince missing sqlite_unlock_notify flag will make sqlite lock table sometimes. For your situation(11 users), we recommend you to migrate to other databases.
@nicovince commented on GitHub (Mar 28, 2019):
Thanks for the update, I'll look into recompiling gitea alpine's package with proper flag. Hopefully that will resolve my issue.
In order to migrate to another database I'm blocked by #6090 and #6034 (I'll try to update that one so you can reproduce it).
@nicovince commented on GitHub (Apr 10, 2019):
Problem fixed with new alpine package since : https://github.com/alpinelinux/aports/pull/6859
Thank you all for your support :)