mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-09 12:46:42 -05:00
Pushing many commits with 'Require Signed Commits' enabled fails with 'Gitea: Internal Server Connection Error' #13765
Closed
opened 2025-11-02 10:52:30 -06:00 by GiteaMirror
·
11 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
type/bug
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#13765
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 @Mik4sa on GitHub (Nov 28, 2024).
Description
On a private repo / gitea instance I merged our default branch into a fairly old feature branch resulting into 1938 commits to be pushed at once. When pushing I get an error after about 64 seconds, so roughly after a minute.
This is what I get in my console:
In the logs from gitea I've found these messages:
I tried the push several times, so I found this error for every try:
Note that branch protection for this branch (all branches) is enabled. The only enabled setting is 'Require Signed Commits'.
The log states that there are unverified commits. Which isnt true. Looking into the default branch I can see that the commit is signed and verified by Gitea. All of them. Interestingly it's always a different commit which should be unverified, according to the logs. Also this error always appear after 61 seconds which is very close to 60 seconds. Sounds like a timeout or something.
The push was successful after I disabled the requirement for signed commits.
Is there a timeout for the pre_receive hook I can adjust or for the signature check? I couldn't find any.
Also I tried to quickly check the source code but couldn't find any timeout, directly. But note that I'm not firm with go nor with the code of Gitea.
Gitea Version
1.22.3
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
No response
Git Version
2.39.1.windows.1
Operating System
Windows Server 2016 - Version 1607 (Build 14393.6452)
How are you running Gitea?
Database
MSSQL
@Mik4sa commented on GitHub (Mar 13, 2025):
Any update here? We are still facing this issue.
@wxiaoguang commented on GitHub (Mar 13, 2025):
The failure is from this call: https://github.com/go-gitea/gitea/blob/release/v1.23/routers/private/hook_verification.go#L48
Unfortunately the related "verification" code is extremely complex, it seems impossible (to me) to guess the root problem by just reading code.
If you need to figure out the root problem, maybe you need to try to debug it in your environment.
Meanwhile, let's do a best guess: maybe the failure is not caused by the verification, but just by your reverse proxy (or some other settings) because it always fails in 60s and the failed commit ID seems random.
-> https://github.com/go-gitea/gitea/issues/33865#issuecomment-2720302992
@Mik4sa commented on GitHub (Mar 13, 2025):
Thank you for your reply. Back then I tried changing some timeouts but without luck. I'll try this at some point again and come back :)
@Mik4sa commented on GitHub (Mar 14, 2025):
It does not seem to be the reverse proxy I'm using. Lowering the read timeout results in a different message.
Also, today I found a different log message:
So I'm reffering to this one:
GetUserByEmail: context canceledWhat does
context canceledmean though? It always takes about 65 (definitive more then 60) seconds.@ChristopherHX commented on GitHub (Mar 15, 2025):
Gitea noticed you closed the http connection (if this was not you cancelling the request then it is the reverse proxy) , then the next cancellable operation returns this error (this error message is a detail of the golang standard library)
5s is the time Gitea took to react to your cancel request + the time any reverse proxy / network etc. took to forward this cancellation.
I have written programs that take more than 5s to finish gracefully.
Normally reverse proxy sent gateway timeout to the client if it times out.
@Mik4sa commented on GitHub (Mar 18, 2025):
hmm I actually still think that the problem is somewhere else. But I'm unsure where to check.
I've made a new test on gitea in docker on my local machine. So there is no more a proxy between the client (me) and the gitea host. I still get that error.
Any ideas what else I could check / verify?
@TheFox0x7 commented on GitHub (Mar 18, 2025):
Wouldn't this fit the issue?
c0b55670dc/modules/private/hook.go (L107-L113)http client will time out after 60 seconds + some more from old commits if any, which would cancel the server request. I don't have the means to test this theory unfortunately.
@Mik4sa Can you compile gitea from source? If so you can try to adjust the timeout there to 120 seconds for example and see if this changes the result - either it'll fail later, resolve the issue... or I my guess is wrong.
@Mik4sa commented on GitHub (Mar 18, 2025):
@TheFox0x7
Nice, thank you. I'll try this tomorrow. I already searched through the code but didn't found this one. I was looking for it :)
Yes, I can compile and try this one. Did this already for other tests :)
@Mik4sa commented on GitHub (Mar 19, 2025):
@TheFox0x7
That was the missing part! Thank you. I changed just that value from 60 to 300 (5 minutes) and after 3 minutes my commits were successfully pushed :)
Is someone of you willing to make the needed changes? I guess the default configured timeouts should / could be used for that too?
@TheFox0x7 commented on GitHub (Mar 19, 2025):
It could use the default, or account for amount of incoming commits as well. Or both. I'm not sure what the right fix is for these things.
I'm guessing (haven't looked) that the []NewCommitsIds is the count of incoming commits, so we could modify the timeout to be:
And replace hardcoded 60 with a
git.timeout(or other) setting.@Mik4sa commented on GitHub (Mar 20, 2025):
I've just checked
opts.OldCommitIDsandopts.NewCommitIDsboth have the value 1. So it's not the count of all pushing commits.I think it's ok to start with the default timeout. We could look what will happen.