Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
832ce41
Bump actions/checkout from 6.0.1 to 6.0.2 in /.github/workflows
dependabot[bot] Feb 1, 2026
23617bc
Pin Flux version for CI to v0.48.0
nchaimov Feb 6, 2026
d4fafe3
Merge pull request #130 from ParaToolsInc/pin-flux-version
mplegendre Feb 6, 2026
0c26554
Merge pull request #129 from llnl/dependabot/github_actions/dot-githu…
mplegendre Feb 6, 2026
8285cb8
Bugfix: Prevent segfault when TMPDIR is not given
neicker Feb 19, 2024
871825d
Bugfix: Fix segfault when trying to bind unforeseen symbol
neicker Feb 19, 2024
d51caee
Bugfix: Actually use scontrol for host expansion if detected
neicker Feb 19, 2024
f486040
Bugfix: Fix argument propagation to Slurm SPANK plugin
nchaimov Nov 6, 2025
7cb16bb
Bugfix: Let debug report the correct assignment
neicker Feb 19, 2024
d040c95
Bugfix: Prevent memory leak
neicker Feb 19, 2024
743441d
Actually debug print scontrol's command line
neicker Feb 19, 2024
254b8d8
Cleanup the unique_file helping to identify the local BE process
neicker Feb 19, 2024
b0e557c
Do not write 'fepid' file that is never read again
neicker Feb 19, 2024
ccd129d
Let spindle helper escape to own process group
neicker Feb 19, 2024
17099f6
Remove combined_argc, combined_argv which is never used
neicker Feb 19, 2024
0f6289f
Add detection of sinfo binary for use in SPANK plugin
nchaimov Nov 6, 2025
3755c18
Translate Slurm NodeName to NodeAddr for server communication setup
neicker Feb 19, 2024
e62ad67
Check for SPANK's spank_prepend_task_argv() in configure
nchaimov Nov 6, 2025
608ea09
Use spank_prepend_task_argv() to tweak task's argv
neicker Feb 19, 2024
58f433f
Only free env_value if it was actually allocated
nchaimov Nov 14, 2025
e50f2eb
Don't require rsh launch when SPANK plugin is built; ensure shutdown is
nchaimov Dec 31, 2025
495286b
Handle --level=off in SPANK plugin
nchaimov Jan 8, 2026
2d6d5a8
CI testing for SPANK plugin
nchaimov Jan 12, 2026
4f8d30b
Use SLURM_STEP_NODELIST to account for change in NNODES between sallo…
nchaimov Feb 11, 2026
4174224
Merge pull request #125 from ParaToolsInc/spank-plugin
mplegendre Feb 13, 2026
639e5bf
Cachepath: parse_loc utilities.
rountree-alt Oct 3, 2025
9197ed6
Cachepath: remove/rename [orig_]location.
rountree-alt Oct 3, 2025
6338f66
Cachepath: Configure-time support.
rountree-alt Oct 3, 2025
c8f2aec
Cachepath: Internal messaging for path resolution
rountree-alt Oct 3, 2025
0e10b0d
Cachepath: Adds cobo_allreduce()
rountree-alt Oct 3, 2025
6a51b6a
Cachepath: Adds parameters to config_mgr
rountree-alt Oct 3, 2025
78084c4
Cachepath: adds flux parameter support
rountree-alt Oct 3, 2025
2ac6bf1
Cachepath: Adds logging support.
rountree-alt Oct 3, 2025
efa7ee8
Cachepath: Removes out-of-root cleanup checks.
rountree-alt Oct 3, 2025
b2c4b85
Cachepath: Set of small, miscellaneous patches.
rountree-alt Oct 3, 2025
1c9c6e0
Fixes per Matt's comments.
rountree-alt Oct 21, 2025
5ecf207
Single source of truth for client cachepath.
rountree-alt Oct 22, 2025
7edf09a
Comments the cachepath variables.
rountree-alt Oct 22, 2025
c88b2ee
Removes internal vars from spindle_launch.h
rountree-alt Oct 23, 2025
d79d53b
Client cachepath message now uses single response.
rountree-alt Oct 23, 2025
acf56be
Removes assert(0) in network error paths.
rountree-alt Oct 23, 2025
62d7fe4
Renames ldcs_audit_server_md_consensus().
rountree-alt Oct 23, 2025
fc86c6c
Adds explicit enum values to CmdlineShortOptions.
rountree-alt Oct 23, 2025
cac9bbc
Return instead of exit on network errors.
rountree-alt Oct 23, 2025
c0df2ec
Apply rename to configuration and parameters.
rountree-alt Oct 24, 2025
c8d5878
Renaming location variables/fields to commpath.
rountree-alt Oct 24, 2025
4948413
Renames enums.
rountree-alt Oct 24, 2025
b55e7a8
Use strdup() for commpath instead of stack var.
rountree-alt Nov 5, 2025
76043b1
Adds LDCS_COMMPATH
rountree-alt Nov 12, 2025
76d559c
Restores checkLinkForLeak() to test_driver.c
rountree-alt Nov 13, 2025
3d87cb0
Replacing "location" with "commpath" as needed.
rountree-alt Nov 13, 2025
9476ec2
Continues location rename.
rountree-alt Nov 14, 2025
ba1ac1d
Fixes -Wsign-compare warning in new code.
rountree-alt Dec 7, 2025
f39ff32
LDCS_CHOSEN_PARSED_CACHEPATH set in bootstrap.
rountree-alt Dec 7, 2025
8ccb6fe
Updates test_driver.c to ignore FIFO files.
rountree-alt Dec 19, 2025
c370691
Sets TMPDIR=/tmp in each Dockerfile
rountree-alt Jan 12, 2026
cdbef19
Restores --with-localstorage to generate error.
rountree-alt Feb 12, 2026
02d5b02
Updates spank plugin to use commpath.
rountree-alt Feb 13, 2026
baacb98
Updates a configure script to use commpath.
rountree-alt Feb 13, 2026
68fcf95
Additional integration for commpath + spank-plugin.
rountree-alt Feb 13, 2026
6b16d29
Fixes two silly bugs.
rountree-alt Feb 14, 2026
48c39e5
Testing non-overlapping cache/commpath directories.
rountree-alt Feb 20, 2026
46b0f92
Testing commpath as subdirectory of cachepath.
rountree-alt Feb 20, 2026
228be23
Testing cachepath as a subdirectory of commpath.
rountree-alt Feb 20, 2026
aeea042
Dummy commit to trigger CI
rountree-alt Feb 20, 2026
e8c24e6
Another dummy commit.
rountree-alt Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 61 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out Spindle
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
Expand Down Expand Up @@ -68,7 +68,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out Spindle
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out Spindle
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
Expand Down Expand Up @@ -163,3 +163,61 @@ jobs:
cd containers/spindle-slurm-ubuntu/testing
docker compose down

spindle-slurm-plugin-ubuntu:
name: Testsuite (Slurm Plugin, Ubuntu)
environment: Spindle CI
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out Spindle
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8

- name: Setup Docker Compose
uses: docker/setup-compose-action@364cc21a5de5b1ee4a7f5f9d3fa374ce0ccde746
with:
version: latest

- name: Login to GitHub Container Registry
if: ${{ !env.ACT }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate MariaDB configuration
id: slurm-ubuntu-mariadb
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
./generate_config.sh

- name: Build spindle-slurm-plugin-ubuntu image
id: slurm-ubuntu-build
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose --progress=plain build

- name: Bring spindle-slurm-plugin-ubuntu up
id: slurm-ubuntu-up
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose up -d --wait --wait-timeout 120

- name: Verify munge works in spindle-slurm-plugin-ubuntu
id: slurm-ubuntu-munge
run: |
docker exec slurm-plugin-head bash -c 'munge -n | unmunge'

- name: Run spindle-slurm-plugin-ubuntu testsuite
id: slurm-ubuntu-testsuite
run: |
docker exec slurm-plugin-head bash -c 'cd Spindle-build/testsuite && salloc -n${workers} -N${workers} ./runTests ${workers}'

- name: Bring spindle-slurm-plugin-ubuntu down
id: slurm-ubuntu-down
if: ${{ always() }}
continue-on-error: true
run: |
cd containers/spindle-slurm-ubuntu/testing-plugin
docker compose down

2 changes: 1 addition & 1 deletion .github/workflows/container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f
Expand Down
1 change: 1 addition & 0 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@ SCONTROL_ABSPATH = @SCONTROL_ABSPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SINFO_ABSPATH = @SINFO_ABSPATH@
SRUN_PATH = @SRUN_PATH@
STATICFLAG = @STATICFLAG@
STRIP = @STRIP@
Expand Down
13 changes: 10 additions & 3 deletions config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
/* Whether we are using a broken srun */
#undef BROKEN_SRUN

/* Colon-separated list of potential back-end cache directories */
#undef CACHEPATHS

/* Back-end directory for communication and housekeeping */
#undef COMMPATH

/* Define if were using biter for client/server communication */
#undef COMM_BITER

Expand Down Expand Up @@ -33,6 +39,10 @@
/* Slurm with via plugin is enabled */
#undef ENABLE_SLURM_PLUGIN

/* Define to 1 if you have the declaration of `spank_prepend_task_argv', and
to 0 if you don't. */
#undef HAVE_DECL_SPANK_PREPEND_TASK_ARGV

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

Expand Down Expand Up @@ -127,9 +137,6 @@
/* Default mode for slurm launch */
#undef SLURMLAUNCH_ENABLED

/* The default local directory for Spindle */
#undef SPINDLE_LOC

/* The default colon-separated list of directories that Spindle will not cache
files out of */
#undef SPINDLE_LOCAL_PREFIX
Expand Down
163 changes: 157 additions & 6 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,7 @@ LIBOBJS
PKGSYSCONF_DIR
BLD_SLURMPLUGIN_FALSE
BLD_SLURMPLUGIN_TRUE
SINFO_ABSPATH
SCONTROL_ABSPATH
BE_host
BE_CXXCPP
Expand Down Expand Up @@ -847,6 +848,9 @@ enable_maintainer_mode
with_default_port
with_default_num_ports
with_localstorage
with_cachepaths
with_cachepath
with_commpath
with_default_local_prefix
with_testrm
with_rm
Expand Down Expand Up @@ -1589,7 +1593,13 @@ Optional Packages:
--with-default-numports=NUM
Number of TCP/IP ports to scan for Spindle server
communication
--with-localstorage=DIR Directory on back-ends for storing relocated files
--with-localstorage=DIR (obsolete)
Use --with-cachepaths and --with-commpath instead.
--with-cachepaths=DIR Colon-separated list of potential back-end cache
directories
,
--with-compath=DIR Back-end directory for communication and
housekeeping
--with-default-local-prefix=DIRS
Colon-seperated list of directories that Spindle
will not cache files out of
Expand Down Expand Up @@ -2212,6 +2222,52 @@ fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_mongrel

# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly.
ac_fn_c_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
#ifndef $as_decl_name
#ifdef __cplusplus
(void) $as_decl_use;
#else
(void) $as_decl_name;
#endif
#endif

;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$3=yes"
else
eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_decl
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
Expand Down Expand Up @@ -16617,17 +16673,37 @@ fi

# Check whether --with-localstorage was given.
if test "${with_localstorage+set}" = set; then :
withval=$with_localstorage; SPINDLE_LOC=${withval}
withval=$with_localstorage; as_fn_error $? "requested obsolete option --with-localstorage. Use --with-cachepaths and --with-commpath instead." "$LINENO" 5
fi


# Check whether --with-cachepaths was given.
if test "${with_cachepaths+set}" = set; then :
withval=$with_cachepaths; CACHEPATHS=${withval}
else
SPINDLE_LOC=$DEFAULT_LOC
CACHEPATHS=$DEFAULT_LOC
fi


# Check whether --with-cachepath was given.
if test "${with_cachepath+set}" = set; then :
withval=$with_cachepath; as_fn_error $? "use --with-cachepaths=DIRS (plural) instead of --with-cachepath=DIR to specify one or more cache paths" "$LINENO" 5
fi


# Check whether --with-commpath was given.
if test "${with_commpath+set}" = set; then :
withval=$with_commpath; COMMPATH=${withval}
else
COMMPATH=$DEFAULT_LOC
fi


# Check whether --with-default-local-prefix was given.
if test "${with_default_local_prefix+set}" = set; then :
withval=$with_default_local_prefix; SPINDLE_LOCAL_PREFIX=${withval}
else
SPINDLE_LOCAL_PREFIX="$DEFAULT_LOCAL_PREFIX:$SPINDLE_LOC"
SPINDLE_LOCAL_PREFIX="$DEFAULT_LOCAL_PREFIX:$COMMPATH"
fi


Expand All @@ -16647,7 +16723,12 @@ _ACEOF


cat >>confdefs.h <<_ACEOF
#define SPINDLE_LOC "$SPINDLE_LOC"
#define COMMPATH "$COMMPATH"
_ACEOF


cat >>confdefs.h <<_ACEOF
#define CACHEPATHS "$CACHEPATHS"
_ACEOF


Expand Down Expand Up @@ -16911,7 +16992,7 @@ $as_echo "yes" >&6; }
$as_echo "$as_me: WARNING: Slurm launching was explicitly requested, but slurm $srun_version, which is later than $bad_srun_major.$bad_srun_minor, was detected. This version of slurm breaks spindle daemon launch. You might still be able to get spindle to work by running jobs with srun's --overlap option. Or you could switch to having spindle launch daemons with rsh/ssh by passing the --with-rsh-launch option, and ensuring that rsh/ssh to nodes works on your cluster." >&2;}
fi

if [ "x$ENABLE_RSH_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_LAUNCH" != "x1" ] ; then
if [ "x$ENABLE_RSH_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_LAUNCH" != "x1" ] && [ "x$ENABLE_SLURM_PLUGIN" != "xtrue" ] ; then
if test "x$BROKEN_SRUN" == "x1"; then
as_fn_error $? "Slurm support was requested, but slurm $srun_version, which is later than $bad_srun_major.$bad_srun_minor, was detected. This version of slurm breaks spindle daemon launch. You can disable this error message and build spindle with slurm-based daemon launching anyways by explicitly passing the --with-slurm-launch option (you might still be able to get spindle to work by running jobs with srun's --overlap option). Or you could switch to having spindle launch daemons with rsh/ssh by passing the --with-rsh-launch option, and ensuring that rsh/ssh to nodes works on your cluster." "$LINENO" 5
else
Expand Down Expand Up @@ -18658,6 +18739,18 @@ fi


CPPFLAGS=$OCPPFLAGS
ac_fn_c_check_decl "$LINENO" "spank_prepend_task_argv" "ac_cv_have_decl_spank_prepend_task_argv" "#include<slurm/spank.h>
"
if test "x$ac_cv_have_decl_spank_prepend_task_argv" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
fi

cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SPANK_PREPEND_TASK_ARGV $ac_have_decl
_ACEOF


OPATH=$PATH
if test "x$SLURM_DIR" != "x"; then
Expand Down Expand Up @@ -18707,6 +18800,50 @@ fi
if test "x$SCONTROL_ABSPATH" == "xnotfound"; then
as_fn_error $? "Could not find scontrol" "$LINENO" 5
fi
# Extract the first word of "sinfo", so it can be a program name with args.
set dummy sinfo; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_SINFO_ABSPATH+:} false; then :
$as_echo_n "(cached) " >&6
else
case $SINFO_ABSPATH in
[\\/]* | ?:[\\/]*)
ac_cv_path_SINFO_ABSPATH="$SINFO_ABSPATH" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_SINFO_ABSPATH="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS

test -z "$ac_cv_path_SINFO_ABSPATH" && ac_cv_path_SINFO_ABSPATH="notfound"
;;
esac
fi
SINFO_ABSPATH=$ac_cv_path_SINFO_ABSPATH
if test -n "$SINFO_ABSPATH"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SINFO_ABSPATH" >&5
$as_echo "$SINFO_ABSPATH" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi


if test "x$SINFO_ABSPATH" == "xnotfound"; then
as_fn_error $? "Could not find sinfo" "$LINENO" 5
fi
PATH=$OPATH
fi

Expand All @@ -18720,6 +18857,16 @@ fi

SCONTROL_ABSPATH=$SCONTROL_ABSPATH

SINFO_ABSPATH=$SINFO_ABSPATH


if test "x$ENABLE_FLUX_PLUGIN" = "xtrue"; then
BLD_FLUXPLUGIN_TRUE=
BLD_FLUXPLUGIN_FALSE='#'
else
BLD_FLUXPLUGIN_TRUE='#'
BLD_FLUXPLUGIN_FALSE=
fi


cat >confcache <<\_ACEOF
Expand Down Expand Up @@ -18935,6 +19082,10 @@ if test -z "${BLD_SLURMPLUGIN_TRUE}" && test -z "${BLD_SLURMPLUGIN_FALSE}"; then
as_fn_error $? "conditional \"BLD_SLURMPLUGIN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${BLD_FLUXPLUGIN_TRUE}" && test -z "${BLD_FLUXPLUGIN_FALSE}"; then
as_fn_error $? "conditional \"BLD_FLUXPLUGIN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi

: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
Expand Down
Loading
Loading