Skip to content

Commit fd5c6d2

Browse files
authored
Merge pull request #6827 from grondo/singleton
support `singleton` dependency scheme in job submission
2 parents d998edf + 1bda50e commit fd5c6d2

File tree

6 files changed

+450
-0
lines changed

6 files changed

+450
-0
lines changed

doc/man1/common/job-dependencies.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ afterexcept:JOBID
5555
and a fatal job exception caused the transition to CLEANUP (e.g.,
5656
node failure, timeout, cancel, etc.).
5757

58+
singleton
59+
This dependency is satisfied when there are no other active jobs
60+
of the same userid and job name which are not already held with
61+
a singleton dependency. That is, a singleton can be the only
62+
job with the same userid and job name in the SCHED state or later.
63+
The singleton scheme requires an explicit job name using the
64+
``--job-name`` option.
65+
5866
begin-time:TIMESTAMP
5967
This dependency is satisfied after TIMESTAMP, which is specified in
6068
floating point seconds since the UNIX epoch. See the ``--begin-time``

src/modules/job-manager/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ libjob_manager_la_SOURCES = \
7474
plugins/limit-job-size.c \
7575
plugins/limit-duration.c \
7676
plugins/dependency-after.c \
77+
plugins/dependency-singleton.c \
7778
plugins/begin-time.c \
7879
plugins/update-duration.c \
7980
plugins/validate-duration.c \

src/modules/job-manager/jobtap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ extern int priority_default_plugin_init (flux_plugin_t *p);
4848
extern int limit_job_size_plugin_init (flux_plugin_t *p);
4949
extern int limit_duration_plugin_init (flux_plugin_t *p);
5050
extern int after_plugin_init (flux_plugin_t *p);
51+
extern int singleton_plugin_init (flux_plugin_t *p);
5152
extern int begin_time_plugin_init (flux_plugin_t *p);
5253
extern int validate_duration_plugin_init (flux_plugin_t *p);
5354
extern int update_duration_plugin_init (flux_plugin_t *p);
@@ -70,6 +71,7 @@ static struct jobtap_builtin jobtap_builtins [] = {
7071
{ ".limit-job-size", limit_job_size_plugin_init },
7172
{ ".limit-duration", limit_duration_plugin_init },
7273
{ ".dependency-after", after_plugin_init },
74+
{ ".dependency-singleton", singleton_plugin_init },
7375
{ ".begin-time", &begin_time_plugin_init },
7476
{ ".validate-duration", &validate_duration_plugin_init },
7577
{ ".update-duration", &update_duration_plugin_init },

0 commit comments

Comments
 (0)