Torrent stuck at 99.9X%
What is the issue?
Hi all,
This issue has been previously described here https://github.com/transmission/transmission/issues/7919 and it is constantly happening for me in Transmission 4.1.2 (stable version)
Bug Description
As mentioned above, they ALL stall at around 99.97%
No matter which torrent, it's the same behavior for ALL of them
Besides this issue my docker compose stack (see below) works perfectly: download and upload, automatic opening of port for port forwarding, etc.
THIS is important
I am sure that, this issue is relatively recent , from 2022 to 2024, I used to run an old docker image, on another 'old' server, probably with Transmission version 3.X or something like that -> and I NEVER had the issue! Sadly I have lost access and all logs from this old server. So I can't provide a version number but I can say that it was running Ubuntu Server 22.04.
What I ruled out for sure
- This is not a tracker issue, because this happens on private and public server alike
- This is not a VPN issue, the connection inside the container works fine
- This is not a lack of seeders/leechers, as the issue happens even with extremely popular shows
Software setup
I'm running Transmission 4.1.2 with the following docker compose stack
services:
gluetun-proton:
image: qmcgaw/gluetun:latest
container_name: gluetun-proton
cap_add:
- NET_ADMIN
restart: unless-stopped
networks:
- private_secured_network
environment:
- TZ=Etc/UTC
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
# Enable ProtonVPN Port Forwarding
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
# Local network access rule
- FIREWALL_OUTBOUND_SUBNETS=192.168.1.0/24
- FIREWALL_INPUT_PORTS=9091
# Gluetun internal control port
- HTTP_CONTROL_SERVER=on
- HTTP_CONTROL_SERVER_PORT=9999
# Automation Hook: Updates transmission with forwarded port
- VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c "sleep 10 && apk add --no-cache transmission-remote && transmission-remote localhost:9091 -n ${TRANSMISSION_USER}:${TRANSMISSION_PASS} -p {{PORTS}} && transmission-remote localhost:9091 -n ${TRANSMISSION_USER}:${TRANSMISSION_PASS} -t all --reannounce"
volumes:
# Mount your Wireguard config file
- ${CONFIG_PATH}/wg0.conf:/gluetun/wireguard/wg0.conf:ro
- gluetun-proton-state:/gluetun
labels:
- "traefik.enable=true"
- "traefik.docker.network=private_secured_network"
- "traefik.http.routers.transmission-proton.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.transmission-proton.entrypoints=websecure"
- "traefik.http.routers.transmission-proton.tls.certresolver=myresolver"
- "traefik.http.services.transmission-proton.loadbalancer.server.port=9091"
healthcheck:
test: ["CMD", "nc", "-z", "127.0.0.1", "9999"]
interval: 15s
timeout: 5s
retries: 5
start_period: 10s
transmission-proton:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission-proton
restart: unless-stopped
network_mode: "service:gluetun-proton"
depends_on:
gluetun-proton:
condition: service_healthy
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- USER=${TRANSMISSION_USER}
- PASS=${TRANSMISSION_PASS}
volumes:
- ${CONFIG_PATH}/transmission-config:/config
- ${DATA_PATH}/downloads:/downloads
- ${DATA_PATH}/watch:/watch
networks:
private_secured_network:
external: true
volumes:
gluetun-proton-state:Here's my settings.json
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"announce-ip": "",
"announce-ip-enabled": false,
"anti-brute-force-enabled": false,
"anti-brute-force-threshold": 100,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"default-trackers": "",
"dht-enabled": true,
"download-dir": "/downloads/completed",
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/downloads/incomplete",
"incomplete-dir-enabled": true,
"lpd-enabled": true,
"message-level": 2,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 23090,
"peer-limit-per-torrent": 4000,
"peer-port": 46362,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "le",
"pex-enabled": true,
"pidfile": "",
"port-forwarding-enabled": true,
"preallocation": 1,
"preferred_transports": [
"utp",
"tcp"
],
"prefetch-enabled": 1,
"proxy_url": null,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2.0,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"reqq": 2000,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-host-whitelist": "127.0.0.1",
"rpc-host-whitelist-enabled": false,
"rpc-password": "blablablabla",
"rpc-port": 9091,
"rpc-socket-mode": "0750",
"rpc-url": "/transmission/",
"rpc-username": "mrjay",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-added-enabled": false,
"script-torrent-added-filename": "",
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"script-torrent-done-seeding-enabled": false,
"script-torrent-done-seeding-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"sequential_download": false,
"sleep-per-seconds-during-verify": 100,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"start_paused": false,
"tcp-enabled": true,
"torrent-added-verify-mode": "fast",
"torrent_complete_verify_enabled": false,
"trash-original-torrent-files": false,
"umask": "002",
"upload-slots-per-torrent": 14,
"utp-enabled": true,
"watch-dir": "/watch",
"watch-dir-enabled": true,
"watch-dir-force-generic": false
}Logs (?)
I accessed the command line of the container, to look for more logs, but all I could find is this:
[migrations] started
[migrations] no migrations found
───────────────────────────────────────
██╗ ███████╗██╗ ██████╗
██║ ██╔════╝██║██╔═══██╗
██║ ███████╗██║██║ ██║
██║ ╚════██║██║██║ ██║
███████╗███████║██║╚██████╔╝
╚══════╝╚══════╝╚═╝ ╚═════╝
Brought to you by linuxserver.io
───────────────────────────────────────
To support LSIO projects visit:
https://www.linuxserver.io/donate/
───────────────────────────────────────
GID/UID
───────────────────────────────────────
User UID: 1000
User GID: 1000
───────────────────────────────────────
Linuxserver.io version: 4.1.2-r0-ls348
Build-date: 2026-06-09T13:20:54+00:00
───────────────────────────────────────
[custom-init] No custom files found, skipping...
Connection to localhost (127.0.0.1) 9091 port [tcp/*] succeeded!
[ls.io-init] done.
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
sendto: Operation not permitted
[migrations] started
[migrations] no migrations found
usermod: no changes
───────────────────────────────────────
██╗ ███████╗██╗ ██████╗
██║ ██╔════╝██║██╔═══██╗
██║ ███████╗██║██║ ██║
██║ ╚════██║██║██║ ██║
███████╗███████║██║╚██████╔╝
╚══════╝╚══════╝╚═╝ ╚═════╝
Brought to you by linuxserver.io
───────────────────────────────────────
To support LSIO projects visit:
https://www.linuxserver.io/donate/
───────────────────────────────────────
GID/UID
───────────────────────────────────────
User UID: 1000
User GID: 1000
───────────────────────────────────────
Linuxserver.io version: 4.1.2-r0-ls348
Build-date: 2026-06-09T13:20:54+00:00
───────────────────────────────────────
ln: failed to create symbolic link '/transmissionic/index.html': File exists
ln: failed to create symbolic link '/combustion-release/index.html': File exists
ln: failed to create symbolic link '/flood-for-transmission/index.html': File exists
ln: failed to create symbolic link '/kettu/index.html': File exists
ln: failed to create symbolic link '/transmission-web-control/index.html': File exists
[custom-init] No custom files found, skipping...
Connection to localhost (127.0.0.1) 9091 port [tcp/*] succeeded!
[ls.io-init] done.
[2026-06-19T12:57:57.780+0200] ERR utils.cc:144 Couldn't read '/config/torrents/0570209986b051d8eb376a7b43576ecc7f999cb5.magnet': No such file or directory (2) (utils.cc:144)(I would love to provide more logs, but I didn't find more interesting stuff in the container) So yes, there's a few errors here, but nothing about torrent stalling (I'm sure there's log files that I haven't found yet, do not hesitate to point me in the direction and I'll post them here)
There is not always an error and yet the torrents are all blocked at 99.9X% -> of course they end up unblocking themselves after a LONG while. "Long while" = 15 minutes/an hour roughly.
Hardware and network
The VPN works -> all the downloads start right away and ARE being downloaded (up to 99.9X% and then stall for a long while), plus, I can see my upload working fine
The automatic port opening works. I can see in the side
panel -> edit preferences -> networkmenu thatIPv4 port is Openand the port number checks outThe server is not lacking any disk space, there's space available on both HDD that I'm using for torrents
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdg1 3.6T 1.5T 2.0T 44% /home/mrjay/Desktop/data2
/dev/sdh 5.5T 3.7T 1.5T 71% /home/mrjay/Desktop/data- There used to be an issue with the amount of files handled by Docker, a while ago, and as a consequence I modified my daemon.json to look like this:
cat /etc/docker/daemon.json
{
"data-root": "/home/mrjay/Desktop/apps/docker",
"exec-root": "/home/mrjay/Desktop/apps/docker/tmp",
"storage-driver": "overlay2",
"features": {
"buildkit": true
},
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "10m"
},
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"args": []
}
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Soft": 65535,
"Hard": 65535
}
}
}Thank in advance for your help, I hope I gave enough information to describe the bug -> in any case, do not hesitate to ask me for more info
I hope the information right below is correct I selected "transmission-daemon" because out of all the options it was the one making sense and I doubt that the Transmission WebUI that I use is the source of the problem anyway
Which application of Transmission?
transmission-daemon
Which version of Transmission?
4.1.2
Source: transmission/transmission