myxce/src/worker
Rongsong Shen e84a8d4332
fix(worker): remove_worker frees every string add_worker copied (bug-1866)
add_worker strndup's launch_type and the four queue/job pre/post-exec
commands out of the startinfo, but remove_worker only freed exechome,
execcwd, execuser, job_cmd, pids and exdata, so every finished job leaked
up to five strings (LeakSanitizer at xcecd_virtual exit reported the
launch_type one).

New test in test_finished_job_retention.c compares ASAN's live-heap byte
count across an add/remove round trip (the worker suite runs with
detect_leaks=0): RED leaked exactly the 58 bytes of those five strings,
GREEN after. Worker suite 12/12.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 13:14:14 +00:00
..
include fix(worker): xcecd's fixed /tmp files never follow planted links (bug-1869) 2026-09-26 08:13:24 +00:00
scripts import worker code 2025-11-24 15:53:31 +08:00
src fix(worker): remove_worker frees every string add_worker copied (bug-1866) 2026-09-27 13:14:14 +00:00
testsuite fix(worker): remove_worker frees every string add_worker copied (bug-1866) 2026-09-27 13:14:14 +00:00
CLAUDE.md update documents 2026-08-10 17:51:51 +08:00
meson.build feat(worker-rejoin-resync): task 4.3 - wire query receipt and post-join gate 2026-09-01 18:01:03 +00:00
README.md import worker code 2025-11-24 15:53:31 +08:00

Cross-Platform Xcecd Process

This is a cross-platform process manager implementation in C that supports both Linux and Windows platforms. The xcecd provides the following features:

  • Sending status to the remote controller module at port 6789 and receive job requests
  • Maintains a configurable thread pool for request processing
  • Periodically collects and updates system resource status
  • Manages child processes spawned from received commands
  • Caches job status information
  • Uses Unix Domain Sockets for communication between the main process and worker processes

Building

Prerequisites

  • C compiler with C11 support
  • Windows: Visual Studio
  • Linux: GCC and development tools

Build Instructions

On Linux

make

On Windows

nmake

Configuration

The xcecd can be configured through the following parameters in main.c:

  • thread_pool_size: Number of threads in the thread pool (default: 4)
  • resource_update_interval: Interval for updating system resource status in seconds (default: 1)
  • job_status_update_interval: Interval for updating job status in seconds (default: 1)
  • port: Port number to listen on (default: 7869)
  • acct_file_path: Path to the accounting file (default: /tmp/xcecd.acct)
  • log_file_path: Path to the log file (default: /tmp/xcecd.log)
  • domain_sock_path: Path to the Unix Domain Socket file (default: /tmp/xcecd.sock)
  • remote_host: Remote server address (default: lchen02)
  • remote_port: Remote server port (default: 6789)
  • update_interval: Interval for sending status updates to the remote server (default: 1 second)

Usage

Starting the Xcecd

On Windows:

xcecd.exe

On Linux:

./xcecd

Features

  1. Cross-Platform Support

    • Works on both Windows and Linux
    • Abstracts platform-specific implementations
  2. Thread Pool

    • Configurable number of worker threads
    • Efficient request handling
  3. System Monitoring

    • CPU usage monitoring
    • Memory usage monitoring
    • Disk space monitoring
  4. Process Management

    • Spawns child processes for received commands
    • Tracks process status
    • Manages process lifecycle
  5. Network Communication

    • TCP socket-based communication
    • Simple text-based protocol
  6. Unix Domain Socket Communication

    • Uses Unix Domain Sockets for communication between the main process and worker processes

Architecture

The xcecd is composed of several key components:

  • Main Process: Coordinates all components and manages the lifecycle
  • Thread Pool: Handles concurrent request processing
  • System Monitor: Collects and updates system resource information
  • Process Manager: Manages child processes and their status
  • Network Handler: Handles network communication and request receiving
  • Resource Sync: Synchronizes and aggregates resource collection thread, system monitor, and job information

Contributing

Feel free to submit issues and enhancement requests!