Skip to content

3.16

Choose a tag to compare

@AnarManafov AnarManafov released this 09 Oct 08:18
· 7 commits to master since this release

[3.16.0] - 2025-10-09

πŸŽ‰ New Features

Tools API Environment Variable Support

  • Automatic Lightweight Mode: Tools API now automatically detects and respects the DDS_LIGHTWEIGHT_PACKAGE environment variable
  • No More make wn_bin: When using lightweight mode, you no longer need to build the worker binary package with make wn_bin - a huge time saver!
  • Simplified API Usage: Users no longer need to manually set the enable_lightweight flag when the environment variable is set
  • Consistent Behavior: Tools API now behaves consistently with command-line tools (dds-session and dds-submit)
  • Smaller Packages: Worker packages reduced from ~15MB to ~50KB in lightweight mode

πŸ› Bug Fixes

Critical SLURM Plugin Fix for Lightweight Mode

  • Job Submission Failure: Fixed critical bug in SLURM plugin that caused job submissions to fail with "No partition specified or system default partition" error when using lightweight mode
  • Root Cause: The job script template incorrectly placed executable validation code before #SBATCH directives, violating SLURM's parsing requirements. SLURM stops processing #SBATCH options when it encounters the first executable line, causing all subsequent directives (including --partition) to be ignored
  • Template Bug: The placeholder #DDS_LIGHTWEIGHT_VALIDATION appeared in both a comment line and the code section. The boost::replace_all() function replaced both occurrences, breaking the comment syntax and injecting executable code before #SBATCH directives
  • Resolution:
    • Removed lightweight validation code from the job script template entirely
    • Eliminated blank lines between #SBATCH directive placeholders
    • Validation logic moved to worker nodes where it's actually needed (DDSWorker.sh)
  • Impact: SLURM now correctly parses all #SBATCH directives including partition specifications, resource requirements, and job options

Critical Worker Package Deployment Fix

  • DDSWorker.sh Logic Error: Fixed inverted logic bug that caused worker package deployment to fail when pre-compiled binaries were present
  • Impact: This bug prevented users from deploying full worker packages (with binaries) even though the binaries were correctly packaged
  • Resolution: The script now correctly:
    • Extracts and uses binaries when they exist (full package mode)
    • Validates lightweight mode requirements when binaries are absent (lightweight package mode)

πŸš€ For Users

If You Use SLURM with Lightweight Mode

If you experienced SLURM job submission failures with errors like:

Batch job submission failed: No partition specified or system default partition

This was caused by a critical bug in the SLURM plugin template that placed executable code before #SBATCH directives. SLURM stopped parsing directives when it encountered this code, ignoring your partition specifications and other settings.

The fix requires rebuilding DDS:

cd /path/to/DDS/build
make
make install

After rebuilding, your SLURM submissions with lightweight mode will work correctly, and all #SBATCH directives (including partition, CPU requirements, etc.) will be properly recognized.

If You Use Tools API

Before this fix, you had to explicitly set the lightweight flag:

submitInfo.setFlag(SSubmitRequestData::ESubmitRequestFlags::enable_lightweight, true);

Now, simply set the environment variable before running your application:

export DDS_LIGHTWEIGHT_PACKAGE=1
./my_dds_app

The Tools API will automatically:

  • Start sessions with --lightweight flag
  • Configure submit requests for lightweight mode

If You Experienced Worker Package Failures

If you previously encountered errors like:

Error: Can't find WN pre-compiled bin.: /path/to/dds-wrk-bin-3.14-Linux-x86_64.tar.gz

This was caused by the DDSWorker.sh bug and is now fixed. Your worker packages will deploy correctly regardless of whether they contain pre-compiled binaries or are in lightweight mode.

πŸ“ Complete Changelog

For a complete list of all changes, see CHANGELOG.md.