Skip to content

Dropping Workers #623

Description

@acepilotph

Important

Have you searched existing issues (both open and closed) for the issue you are having? If not, please consider doing so - your issue may already be fixed or in discussion!

Bug Information

Setup has 3 PCs
1 - Ubuntu Server
2 - Windows Desktop

Bug Description

I deployed the server side with Portainer via it's "Stacks" option using the docker compose as reference. The same goes with the workers which both are on Docker Desktop with WSL enabled and directory to /video is by NFS. I tried running a bulk queue but for some reason it always drops one of the workers and ending up with only one left and recognized. I checked the logs of the workers and the one left was still just on standby.

Application Information

HandBrake Web Version

  • v0.8.1

Docker Compose

Ubuntu Server

# ATTENTION:
# if you download this file directly, please ensure to rename it to 'compose.yaml'

services:
  handbrake-server:
    image: ghcr.io/thenickoftime/handbrake-web-server:latest
    container_name: handbrake-web-server
    user: 1000:1000 # edit to run as user (uuid:guid) with permissions to access your media. 0:0 to run as root (not recommended).
    network_mode: host
    cpu_shares: 1024

    # ports:
    #   - 9999:9999
    volumes:
      - /home/acesotope/appdata/handbrake-web/data:/data
      - /home/acesotope/Handbrake:/video # ensure this path is the same across all containers
    restart: unless-stopped
    # networks:
    #   - central-bridge

  # handbrake-worker:
  #   image: ghcr.io/thenickoftime/handbrake-web-worker:latest
  #   container_name: handbrake-web-worker
  #   user: 1000:1000 # edit to run as user (uuid:guid) with permissions to access your media. 0:0 to run as root (not recommended).
  #   cpu_shares: 512
    
  #   environment:
  #     - PUID=1000
  #     - PGID=1000
  #     - WORKER_ID=local-worker # give your worker a unique name
  #     - SERVER_URL=handbrake-web-server # change if setting up a standalone worker, prefix with http(s):// if necessary
  #     - SERVER_PORT=9999 # change if using a reverse proxy or the port is otherwise different than above
  #   volumes:
  #     - /home/acesotope/Handbrake:/video # ensure this path is the same across all containers
  #   depends_on:
  #     - handbrake-server

  #   networks:
  #     - central-bridge
  #   restart: always
  #   deploy:
  #     resources:
  #       limits:
  #         cpus: '1.0'      # Limit to 3 full CPU cores
    
        
# networks: 
#   central-bridge:
#     external: true

Worker00

services:
  handbrake-worker-remote:
    image: ghcr.io/thenickoftime/handbrake-web-worker:latest
    container_name: handbrake-worker
    user: 1000:1000
    network_mode: host
    cpu_shares: 512
    environment:
      - WORKER_ID=worker00
      - SERVER_URL=http://192.xxx.xxx.xxx # was censored but is pointing at the Ubuntu Server's IP
      - SERVER_PORT=9999
    volumes:
      - nfs_video:/video
    restart: always
    deploy:
      resources:
        limits:
          memory: 4G       # Limit memory to 4GB

volumes:
  nfs_video:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.xxx.xxx.xxx,rw,nfsvers=4,tcp,rsize=65536,wsize=65536,async,noatime,soft,timeo=50,retrans=90,nolock
      device: :/home/acesotope/Handbrake

Worker01

services:
  handbrake-worker-remote:
    image: ghcr.io/thenickoftime/handbrake-web-worker:latest
    container_name: handbrake-worker-01
    network_mode: host
    cpu_shares: 512
    user: 1000:1000
    environment:
      - WORKER_ID=worker01
      - SERVER_URL=http://192.xxx.xxx.xxx
      - SERVER_PORT=9999
    volumes:
      - nfs_video:/video

    deploy:
      resources:
        limits:
          memory: 4G       # Limit memory to 4GB
          
    restart: always

volumes:
  nfs_video:
    driver: local
    driver_opts:
      type: nfs
      o: addr=http://192.xxx.xxx.xxx,rw,nfsvers=4,tcp,rsize=65536,wsize=65536,async,noatime,soft,timeo=50,retrans=90,nolock
      device: :/home/acesotope/Handbrake

Host Machine

  • PC 1 (Doesn't have access at the moment to get the full info)
  • OS: Ubuntu Server
  • CPU: Intel i3
  • GPU: iGPU
  • PC 2
  • OS: Windows 11
  • CPU: Ryzen 3 3200G
  • GPU: iGPU
  • PC 3 (Doesn't have access at the moment to get the full info)
  • OS: Windows 11
  • CPU: Ryzen
  • GPU: iGPU

Log Information

Web Server

    "qsv": false,
    "nvenc": false,
    "vcn": false
  }
}
08:19:03 [server] [socket] Checking worker 'worker00' for an existing job in progress...
08:19:03 [server] [socket] Worker 'worker00' is busy with job '71'.
08:19:03 [server] [socket] [warn] The server's information about job '71' is out of date. Setting the job's worker and to the state 'Unknown' until we hear back from the worker again.
08:19:03 [server] [database] Status for job with id '71' has changed from 'Unknown' to 'Transcoding'.
08:21:38 [server] [socket] Worker 'worker00' with ID 'XS72ETXpcGeXBIgDAAAV' has disconnected with reason 'ping timeout'.
08:21:38 [server] [socket] Disconnected worker 'worker00' was working on job '71' when disconnected - setting job to 'unknown'.
08:21:38 [server] [database] Status for job with id '71' has changed from 'Transcoding' to 'Unknown'.
08:21:39 [server] [socket] Worker 'worker00' has connected with ID 'zjw7pZc6M0MbS2cSAAAX'.
08:21:39 [server] [socket] Getting worker 'worker00' properties...
08:21:39 [server] [socket] Worker properties = {
  "version": {
    "handbrake": "1.10.2",
    "application": "0.8.1"
  },
  "capabilities": {
    "cpu": true,
    "qsv": false,
    "nvenc": false,
    "vcn": false
  }
}
08:21:39 [server] [socket] Checking worker 'worker00' for an existing job in progress...
08:21:39 [server] [socket] Worker 'worker00' is busy with job '71'.
08:21:39 [server] [socket] [warn] The server's information about job '71' is out of date. Setting the job's worker and to the state 'Unknown' until we hear back from the worker again.
08:21:39 [server] [database] Status for job with id '71' has changed from 'Unknown' to 'Transcoding'.
08:21:59 [server] [database] Status for job with id '71' has changed from 'Transcoding' to 'Finished'.
08:21:59 [server] [database] Removing job with id '71' from the 'jobs_order' table.
08:21:59 [server] [database] Updating job with id '72' from order index 2 to 1.
08:21:59 [server] [database] Updating job with id '73' from order index 3 to 2.
08:21:59 [server] [database] Updating job with id '74' from order index 4 to 3.
08:21:59 [server] [database] Updating job with id '75' from order index 5 to 4.
08:21:59 [server] [database] Updating job with id '76' from order index 6 to 5.
08:21:59 [server] [database] Updating job with id '77' from order index 7 to 6.
08:21:59 [server] [database] Updating job with id '78' from order index 8 to 7.
08:21:59 [server] [database] Updating job with id '79' from order index 9 to 8.
08:21:59 [server] [database] Updating job with id '80' from order index 10 to 9.
08:21:59 [server] [database] Updating job with id '81' from order index 11 to 10.
08:21:59 [server] [database] Updating job with id '82' from order index 12 to 11.
08:21:59 [server] [database] Updating job with id '47' from order index 13 to 12.
08:21:59 [server] [database] Updating job with id '49' from order index 14 to 13.
08:21:59 [server] [database] Updating job with id '51' from order index 15 to 14.
08:21:59 [server] [database] Updating job with id '53' from order index 16 to 15.
08:21:59 [server] [database] Updating job with id '52' from order index 17 to 16.
08:21:59 [server] [database] Updating job with id '55' from order index 18 to 17.
08:21:59 [server] [database] Updating job with id '62' from order index 19 to 18.
08:21:59 [server] [database] Updating job with id '64' from order index 20 to 19.
08:21:59 [server] [database] Updating job with id '65' from order index 21 to 20.
08:21:59 [server] [queue] Worker with ID 'worker00' is available, checking for available jobs...
08:21:59 [server] [queue] Found job with ID '72' for worker with ID 'worker00'.
08:21:59 [server] [socket] Worker 'worker00' has sent the log 'worker00-job-71.log' to be saved to '/data/log'.
08:21:59 [server] [log] Log file from worker 'worker00' has been written to '/data/log/worker00-job-71.log'.
08:21:59 [server] [database] Status for job with id '72' has changed from 'Waiting' to 'Scanning'.
08:21:59 [server] [queue] Worker 'worker00' has started work on job '72'.
08:22:09 [server] [socket] Worker 'worker00' with ID 'zjw7pZc6M0MbS2cSAAAX' has disconnected with reason 'ping timeout'.
08:22:09 [server] [socket] Disconnected worker 'worker00' was working on job '72' when disconnected - setting job to 'unknown'.
08:22:09 [server] [database] Status for job with id '72' has changed from 'Scanning' to 'Unknown'.
08:22:10 [server] [socket] Worker 'worker00' has connected with ID '9ZIHlBsZlMBWNNTHAAAZ'.
08:22:10 [server] [socket] Getting worker 'worker00' properties...
08:22:10 [server] [socket] Worker properties = {
  "version": {
    "handbrake": "1.10.2",
    "application": "0.8.1"
  },
  "capabilities": {
    "cpu": true,
    "qsv": false,
    "nvenc": false,
    "vcn": false
  }
}
08:22:10 [server] [socket] Checking worker 'worker00' for an existing job in progress...
08:22:10 [server] [socket] Worker 'worker00' is busy with job '72'.
08:22:10 [server] [socket] [warn] The server's information about job '72' is out of date. Setting the job's worker and to the state 'Unknown' until we hear back from the worker again.
08:22:10 [server] [database] Status for job with id '72' has changed from 'Unknown' to 'Transcoding'.
08:24:20 [server] [socket] Worker 'worker00' with ID '9ZIHlBsZlMBWNNTHAAAZ' has disconnected with reason 'ping timeout'.
08:24:20 [server] [socket] Disconnected worker 'worker00' was working on job '72' when disconnected - setting job to 'unknown'.
08:24:20 [server] [database] Status for job with id '72' has changed from 'Transcoding' to 'Unknown'.
08:24:21 [server] [socket] Worker 'worker00' has connected with ID 'MAgLgH8do-2PKKEWAAAb'.
08:24:21 [server] [socket] Getting worker 'worker00' properties...
08:24:21 [server] [socket] Worker properties = {
  "version": {
    "handbrake": "1.10.2",
    "application": "0.8.1"
  },
  "capabilities": {
    "cpu": true,
    "qsv": false,
    "nvenc": false,
    "vcn": false
  }
}
08:24:21 [server] [socket] Checking worker 'worker00' for an existing job in progress...
08:24:21 [server] [socket] Worker 'worker00' is busy with job '72'.
08:24:21 [server] [socket] [warn] The server's information about job '72' is out of date. Setting the job's worker and to the state 'Unknown' until we hear back from the worker again.
08:24:21 [server] [database] Status for job with id '72' has changed from 'Unknown' to 'Transcoding'.

Worker00

08:25:48 [worker00] [transcode] [processing] 86.14 %
08:25:48 [worker00] [transcode] [processing] 86.25 %
08:25:49 [worker00] [transcode] [processing] 86.38 %
08:25:49 [worker00] [transcode] [processing] 86.51 %
08:25:49 [worker00] [transcode] [processing] 86.63 %
08:25:50 [worker00] [transcode] [processing] 86.73 %
08:25:50 [worker00] [transcode] [processing] 86.84 %
08:25:50 [worker00] [transcode] [processing] 86.95 %
08:25:51 [worker00] [transcode] [processing] 87.06 %
08:25:51 [worker00] [transcode] [processing] 87.15 %
08:25:51 [worker00] [transcode] [processing] 87.26 %
08:25:51 [worker00] [transcode] [processing] 87.36 %
08:25:52 [worker00] [transcode] [processing] 87.50 %
08:25:52 [worker00] [transcode] [processing] 87.61 %
08:25:52 [worker00] [transcode] [processing] 87.73 %
08:25:53 [worker00] [transcode] [processing] 87.81 %
08:25:53 [worker00] [transcode] [processing] 87.86 %
08:25:53 [worker00] [transcode] [processing] 87.95 %
08:25:54 [worker00] [transcode] [processing] 88.05 %
08:25:54 [worker00] [transcode] [processing] 88.17 %
08:25:54 [worker00] [transcode] [processing] 88.22 %
08:25:54 [worker00] [transcode] [processing] 88.31 %
08:25:55 [worker00] [transcode] [processing] 88.37 %
08:25:55 [worker00] [transcode] [processing] 88.45 %
08:25:55 [worker00] [transcode] [processing] 88.57 %
08:25:56 [worker00] [transcode] [processing] 88.65 %
08:25:56 [worker00] [transcode] [processing] 88.76 %
08:25:56 [worker00] [transcode] [processing] 88.85 %
08:25:57 [worker00] [transcode] [processing] 88.97 %
08:25:57 [worker00] [transcode] [processing] 89.07 %
08:25:57 [worker00] [transcode] [processing] 89.14 %
08:25:57 [worker00] [transcode] [processing] 89.25 %
08:25:58 [worker00] [transcode] [processing] 89.34 %
08:25:58 [worker00] [transcode] [processing] 89.43 %
08:25:58 [worker00] [transcode] [processing] 89.53 %
08:25:59 [worker00] [transcode] [processing] 89.58 %
08:25:59 [worker00] [transcode] [processing] 89.71 %
08:25:59 [worker00] [transcode] [processing] 89.76 %
08:26:00 [worker00] [transcode] [processing] 89.85 %
08:26:00 [worker00] [transcode] [processing] 89.91 %
08:26:00 [worker00] [transcode] [processing] 90.00 %
08:26:00 [worker00] [transcode] [processing] 90.07 %
08:26:01 [worker00] [transcode] [processing] 90.16 %
08:26:01 [worker00] [transcode] [processing] 90.20 %
08:26:01 [worker00] [transcode] [processing] 90.34 %
08:26:02 [worker00] [transcode] [processing] 90.38 %
08:26:02 [worker00] [transcode] [processing] 90.50 %
08:26:02 [worker00] [transcode] [processing] 90.61 %
08:26:03 [worker00] [transcode] [processing] 90.75 %
08:26:03 [worker00] [transcode] [processing] 90.88 %
08:26:03 [worker00] [transcode] [processing] 91.00 %
08:26:03 [worker00] [transcode] [processing] 91.10 %
08:26:04 [worker00] [transcode] [processing] 91.23 %
08:26:04 [worker00] [transcode] [processing] 91.32 %
08:26:04 [worker00] [transcode] [processing] 91.40 %
08:26:05 [worker00] [transcode] [processing] 91.50 %
08:26:05 [worker00] [transcode] [processing] 91.62 %
08:26:05 [worker00] [transcode] [processing] 91.68 %
08:26:06 [worker00] [transcode] [processing] 91.83 %
08:26:06 [worker00] [transcode] [processing] 91.94 %
08:26:06 [worker00] [transcode] [processing] 92.08 %
08:26:06 [worker00] [transcode] [processing] 92.19 %
08:26:07 [worker00] [transcode] [processing] 92.30 %
08:26:07 [worker00] [transcode] [processing] 92.40 %
08:26:07 [worker00] [transcode] [processing] 92.50 %
08:26:08 [worker00] [transcode] [processing] 92.53 %
08:26:08 [worker00] [transcode] [processing] 92.63 %
08:26:08 [worker00] [transcode] [processing] 92.68 %
08:26:09 [worker00] [transcode] [processing] 92.78 %
08:26:09 [worker00] [transcode] [processing] 92.89 %
08:26:09 [worker00] [transcode] [processing] 92.96 %
08:26:09 [worker00] [transcode] [processing] 93.04 %
08:26:10 [worker00] [transcode] [processing] 93.13 %
08:26:10 [worker00] [transcode] [processing] 93.23 %
08:26:10 [worker00] [transcode] [processing] 93.30 %
08:26:11 [worker00] [transcode] [processing] 93.43 %
08:26:11 [worker00] [transcode] [processing] 93.49 %
08:26:11 [worker00] [transcode] [processing] 93.58 %
08:26:12 [worker00] [transcode] [processing] 93.68 %
08:26:12 [worker00] [transcode] [processing] 93.77 %
08:26:12 [worker00] [transcode] [processing] 93.87 %
08:26:13 [worker00] [transcode] [processing] 93.96 %
08:26:13 [worker00] [transcode] [processing] 94.05 %
08:26:13 [worker00] [transcode] [processing] 94.15 %
08:26:13 [worker00] [transcode] [processing] 94.24 %
08:26:14 [worker00] [transcode] [processing] 94.29 %
08:26:14 [worker00] [transcode] [processing] 94.39 %
08:26:14 [worker00] [transcode] [processing] 94.52 %
08:26:15 [worker00] [transcode] [processing] 94.62 %
08:26:15 [worker00] [transcode] [processing] 94.71 %
08:26:15 [worker00] [transcode] [processing] 94.81 %
08:26:16 [worker00] [transcode] [processing] 94.91 %
08:26:16 [worker00] [transcode] [processing] 95.00 %
08:26:16 [worker00] [transcode] [processing] 95.10 %
08:26:16 [worker00] [transcode] [processing] 95.19 %
08:26:17 [worker00] [transcode] [processing] 95.28 %
08:26:17 [worker00] [transcode] [processing] 95.43 %
08:26:17 [worker00] [transcode] [processing] 95.53 %
08:26:18 [worker00] [transcode] [processing] 95.62 %
08:26:18 [worker00] [transcode] [processing] 95.76 %

Worker01

08:15:29 [worker01] [transcode] [processing] 98.13 %
08:15:29 [worker01] [transcode] [processing] 98.16 %
08:15:30 [worker01] [transcode] [processing] 98.25 %
08:15:30 [worker01] [transcode] [processing] 98.33 %
08:15:30 [worker01] [transcode] [processing] 98.39 %
08:15:31 [worker01] [transcode] [processing] 98.47 %
08:15:31 [worker01] [transcode] [processing] 98.57 %
08:15:31 [worker01] [transcode] [processing] 98.64 %
08:15:31 [worker01] [transcode] [processing] 98.69 %
08:15:32 [worker01] [transcode] [processing] 98.78 %
08:15:32 [worker01] [transcode] [processing] 98.85 %
08:15:32 [worker01] [transcode] [processing] 98.94 %
08:15:33 [worker01] [transcode] [processing] 99.00 %
08:15:33 [worker01] [transcode] [processing] 99.13 %
08:15:33 [worker01] [transcode] [processing] 99.19 %
08:15:34 [worker01] [transcode] [processing] 99.27 %
08:15:34 [worker01] [transcode] [processing] 99.36 %
08:15:34 [worker01] [transcode] [processing] 99.42 %
08:15:34 [worker01] [transcode] [processing] 99.43 %
08:15:35 [worker01] [transcode] [processing] 99.53 %
08:15:35 [worker01] [transcode] [processing] 99.59 %
08:15:35 [worker01] [transcode] [processing] 99.65 %
08:15:36 [worker01] [transcode] [processing] 99.73 %
08:15:36 [worker01] [transcode] 
reader: done. 1 scr changes
08:15:36 [worker01] [transcode] [processing] 99.79 %
08:15:36 [worker01] [transcode] [processing] 100.00 %
08:15:37 [worker01] [transcode] [processing] 100.00 %
08:15:37 [worker01] [transcode] 
work: average encoding speed for job is 100.059204 fps
08:15:37 [worker01] [transcode] 
vfr: 34094 frames output, 0 dropped and 0 duped for CFR/PFR
vfr: lost time: 0 (0 frames)
vfr: gained time: 0 (0 frames) (0 not accounted for)
08:15:37 [worker01] [transcode] [processing] 100.00 %
08:15:37 [worker01] [transcode] 
opus-decoder done: 71101 frames, 0 decoder errors
08:15:37 [worker01] [transcode] 
opus-decoder done: 71101 frames, 0 decoder errors
hevc-decoder done: 34094 frames, 0 decoder errors
08:15:37 [worker01] [transcode] 
sync: got 34094 frames, 34094 expected
sync: framerate min 23.976 fps, max 23.976 fps, avg 23.976 fps
08:15:37 [worker01] [transcode] 
x264 : frame I:373   Avg QP:19.63  size: 41430
x264 : frame P:7463  Avg QP:22.44  size:  2656
x264 : frame B:26258 Avg QP:29.16  size:   288
x264 : consecutive B-frames:  3.9%  3.6%  4.3%  9.9%  9.3% 69.0%
x264 : mb I  I16..4: 17.6% 36.8% 45.6%
x264 : mb P  I16..4:  1.5%  2.6%  1.4%  P16..4: 14.2%  4.1%  2.2%  0.0%  0.0%    skip:74.0%
x264 : mb B  I16..4:  0.0%  0.1%  0.1%  B16..8:  5.9%  0.6%  0.2%  direct: 0.2%  skip:92.9%  L0:41.2% L1:55.9% BI: 2.9%
x264 : 8x8 transform intra:42.4% inter:68.7%
08:15:37 [worker01] [transcode] 
x264 : coded y,uvDC,uvAC intra: 55.1% 69.4% 43.1% inter: 1.8% 2.2% 0.3%
x264 : i16 v,h,dc,p: 38% 28%  8% 25%
x264 : i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 16% 22%  5%  6%  6%  6%  7%  7%
x264 : i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 15% 12%  7%  8%  9%  5%  8%  5%
x264 : i8c dc,h,v,p: 50% 17% 23%  9%
x264 : Weighted P-Frames: Y:1.2% UV:0.7%
x264 : ref P L0: 63.5% 11.2% 11.1%  6.3%  3.5%  4.2%  0.2%  0.0%
x264 : ref B L0: 83.0%  8.4%  5.3%  2.2%  1.0%
x264 : ref B L1: 97.7%  2.3%
x264 : kb/s:241.00
08:15:37 [worker01] [transcode] [muxing] 0.00 %
08:15:37 [worker01] [transcode] [muxing] 0.00 %
08:15:38 [worker01] [transcode] [muxing] 0.00 %
08:15:38 [worker01] [transcode] [muxing] 0.00 %
08:15:38 [worker01] [transcode] 
mux: track 0, 34094 frames, 42823532 bytes, 240.91 kbps, fifo 4096
mux: track 1, 66657 frames, 34831274 bytes, 195.95 kbps, fifo 8192
mux: track 2, 66657 frames, 34820229 bytes, 195.89 kbps, fifo 8192
mux: track 3, 98 frames, 915887 bytes, 5.15 kbps, fifo 64
mux: track 4, 863 frames, 9903707 bytes, 55.72 kbps, fifo 128
08:15:38 [worker01] [transcode] 
Finished work at: Fri Jul 17 08:15:38 2026
08:15:38 [worker01] [transcode] 
libhb: work result = 0
08:15:38 [worker01] [transcode] 
�
Encode done!
08:15:38 [worker01] [transcode] Renaming the file '11_1.transcoding.mkv' to '11_1.mkv'.
08:15:38 [worker01] [transcode] Removed the preset file 'preset.json'.
08:15:38 [worker01] [transcode] [finished] 100.00%
08:15:38 [worker01] [transcode] 
HandBrake has exited.
08:15:38 [worker01] [log] Sending the log 'worker01-job-69.log' to the server.

Tip

Please ensure all sections have been filled out with the requested information and the information is properly formatted. Issues with missing/poorly formatted information make giving help more difficult!
en

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    requesttriageAn issue that needs attention for planning/triagetype/bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions