Fix ordering cycle between minecraft.service and minecraft.socket

The socket declared Service=minecraft.service and PartOf=minecraft.service
while the service declared Requires=minecraft.socket. That is a cycle, which
systemd breaks by failing a job — surfacing as "a dependency job for
minecraft.service failed" with no obvious cause.

The socket now only listens; the service owns the relationship via
Requires=/After=/Sockets=. Also stop enabling minecraft.socket directly: it has
no [Install] section, and the service pulls it in.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
main
Amir Alexander Abdelbaki 2026-08-06 00:21:59 +02:00
parent ed85ef98b3
commit a141a31547
1 changed files with 6 additions and 3 deletions

View File

@ -291,11 +291,13 @@ info "writing $UNIT_DIR/minecraft.socket"
cat > "$UNIT_DIR/minecraft.socket" <<EOF cat > "$UNIT_DIR/minecraft.socket" <<EOF
[Unit] [Unit]
Description=Minecraft server console FIFO Description=Minecraft server console FIFO
PartOf=minecraft.service
# No Service= and no PartOf= here on purpose. minecraft.service already declares
# Requires=/After=/Sockets= on this unit, and pointing this one back at the
# service as well forms an ordering cycle that systemd resolves by failing the
# job — which surfaces as "a dependency job for minecraft.service failed".
[Socket] [Socket]
ListenFIFO=$FIFO ListenFIFO=$FIFO
Service=minecraft.service
SocketUser=$MCUSER SocketUser=$MCUSER
SocketGroup=$MCUSER SocketGroup=$MCUSER
SocketMode=0660 SocketMode=0660
@ -310,6 +312,7 @@ Documentation=https://docs.neoforged.net/
After=network-online.target zfs-mount.service After=network-online.target zfs-mount.service
Wants=network-online.target Wants=network-online.target
Requires=minecraft.socket Requires=minecraft.socket
After=minecraft.socket
RequiresMountsFor=$SHARE RequiresMountsFor=$SHARE
[Service] [Service]
@ -349,7 +352,7 @@ EOF
info "reloading systemd" info "reloading systemd"
systemctl daemon-reload systemctl daemon-reload
systemctl enable minecraft.socket minecraft.service >/dev/null systemctl enable minecraft.service >/dev/null
if (( HTTP )); then if (( HTTP )); then
systemctl enable packwiz-http.service >/dev/null systemctl enable packwiz-http.service >/dev/null
systemctl restart packwiz-http.service systemctl restart packwiz-http.service