mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-16 04:42:51 -05:00
systemd: gitea.service not started after database upgrade #7337
Closed
opened 2025-11-02 07:23:18 -06:00 by GiteaMirror
·
13 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
topic/deployment
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#7337
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 @silverwind on GitHub (May 14, 2021).
In the systemd service we recommend a
Requires=dependency, but it seems this causes a issue with the service not being started back up whenaptupgrades the database dependency. I observed the following sequence with such a configuration during a unattended APT upgrade ofmysql.serviceon Ubuntu 20.04.2 using systemd 245:Essentially
gitea.serviceis not started up again after the database upgrade for unknown reason.I don't fully understand why systemd would not bring up
gitea.servicein such a case, but I think we may want to consider usingWants=instead ofRequires=to indicate a "weak" dependency which may help in such a case, or find out what systemd exactly does here.https://unix.stackexchange.com/questions/375091 sounds like the same issue but I don't think the solution is acceptable.
@zeripath commented on GitHub (May 14, 2021):
After=might be better?@silverwind commented on GitHub (May 14, 2021):
We had
After=before but is was changed toRequires=indbb4aeead9. I do think a dependency likeRequires=orWants=is appropriate but there is something particular that apt/systemd do that prevents the service from starting after the dependency was restarted.@zeripath commented on GitHub (May 14, 2021):
I think there's nothing stopping us from having a Requires and After for the same value.
I suspect the problem is that without the After the mysqld.service doesn't know that it needs to restart the service. All systemd knew is that it needed to stop the service because a Required dependency no longer existed.
I guess we need to know the semantics of Requires, Wants and After.
My suspicion is that there are subtle implications of these and that Requires won't start a required service and will shutdown if a Requires service is shutdown. Wants will start the wanted service and will shutdown if the wanted service shutsdown. Whereas After will tell the service that it comes after that it should be started after that service is started.
One test of that theory would be to restart the network.target and see if Gitea is restarted after that.
@silverwind commented on GitHub (May 14, 2021):
One particular interesting comment I found on above stackexchange question is:
This should be testable by creating 2 units with a
Require=relation and then stop/start the one that is being required. Systemd docs don't really mention what happens in such a situation in detail.@noerw commented on GitHub (May 14, 2021):
@silverwind Oh wow thanks for the report, you saved me hours of debugging on my instance, where the same happened the last two days..
@hubertbanas commented on GitHub (May 15, 2021):
I ran into the same issue some time age. This is what resolved it for me
@zeripath commented on GitHub (May 15, 2021):
OK so it sounds like my suspicion above (https://github.com/go-gitea/gitea/issues/15866#issuecomment-841104659) is correct and if we change our suggested definition to include
After=andRequire=we're gonna be fine.In fact it's notable that the lines below regarding socket activation actually suggest this:
@lunny commented on GitHub (May 16, 2021):
Reopen per https://github.com/go-gitea/gitea/pull/15881#issuecomment-841651089
@silverwind commented on GitHub (May 16, 2021):
Doesn't work for me either, simple test:
/etc/systemd/system/unit1.service
/etc/systemd/system/unit2.service
Putting
Wants=instead ofRequires=leads to unit1 never being stopped when unit2 is stopped, better but not ideal.@silverwind commented on GitHub (May 16, 2021):
I think systemd can not provide a solution and we're better off using
Wants=which means gitea will not be stopped when the database stops. Assuming gitea can reconnect to the database, this will work fine.@hubertbanas commented on GitHub (May 16, 2021):
Here is my working
gitea.servicefor your references. I'm runningDebian 10 Buster@silverwind commented on GitHub (May 16, 2021):
Yes, it works without
Requires=becauseRequires=is the option that make the service stop but not start back up. I think eitherAfter=alone orAfter=andWants=are both fine, but we simply can not haveRequires=(orBindsTo=) if we want to avoid the service being stopped when the database stops. Quote fromRequires=docs:@silverwind commented on GitHub (May 16, 2021):
Related systemd issue: https://github.com/systemd/systemd/issues/19626