@@ -36,6 +36,8 @@ struct exec_config {
3636 const char * exec_service ;
3737 int exec_service_override ;
3838 json_t * sdexec_properties ;
39+ int sdexec_stop_timer_sec ;
40+ int sdexec_stop_timer_signal ;
3941 double default_barrier_timeout ;
4042};
4143
@@ -107,6 +109,20 @@ json_t *config_get_sdexec_properties (void)
107109 return exec_conf .sdexec_properties ;
108110}
109111
112+ const char * config_get_sdexec_stop_timer_sec (void )
113+ {
114+ static char buf [32 ];
115+ snprintf (buf , sizeof (buf ), "%d" , exec_conf .sdexec_stop_timer_sec );
116+ return buf ;
117+ }
118+
119+ const char * config_get_sdexec_stop_timer_signal (void )
120+ {
121+ static char buf [32 ];
122+ snprintf (buf , sizeof (buf ), "%d" , exec_conf .sdexec_stop_timer_signal );
123+ return buf ;
124+ }
125+
110126double config_get_default_barrier_timeout (void )
111127{
112128 return exec_conf .default_barrier_timeout ;
@@ -116,15 +132,19 @@ int config_get_stats (json_t **config_stats)
116132{
117133 json_t * o = NULL ;
118134
119- if (!(o = json_pack ("{s:s? s:s? s:s? s:s? s:i s:f}" ,
135+ if (!(o = json_pack ("{s:s? s:s? s:s? s:s? s:i s:f s:i s:i }" ,
120136 "default_cwd" , default_cwd ,
121137 "default_job_shell" , exec_conf .default_job_shell ,
122138 "flux_imp_path" , exec_conf .flux_imp_path ,
123139 "exec_service" , exec_conf .exec_service ,
124140 "exec_service_override" ,
125141 exec_conf .exec_service_override ,
126142 "default_barrier_timeout" ,
127- exec_conf .default_barrier_timeout ))) {
143+ exec_conf .default_barrier_timeout ,
144+ "sdexec_stop_timer_sec" ,
145+ exec_conf .sdexec_stop_timer_sec ,
146+ "sdexec_stop_timer_signal" ,
147+ exec_conf .sdexec_stop_timer_signal ))) {
128148 errno = ENOMEM ;
129149 return -1 ;
130150 }
@@ -153,6 +173,8 @@ static void exec_config_init (struct exec_config *ec)
153173 ec -> exec_service = "rexec" ;
154174 ec -> exec_service_override = 0 ;
155175 ec -> sdexec_properties = NULL ;
176+ ec -> sdexec_stop_timer_sec = 30 ;
177+ ec -> sdexec_stop_timer_signal = 10 ; // SIGUSR1
156178 ec -> default_barrier_timeout = 1800. ;
157179}
158180
@@ -249,6 +271,22 @@ int config_setup (flux_t *h,
249271 }
250272 }
251273
274+ /* Check configuration for exec.stop-timer-* */
275+ if (flux_conf_unpack (conf ,
276+ & err ,
277+ "{s?{s?i s?i}}" ,
278+ "exec" ,
279+ "sdexec-stop-timer-sec" ,
280+ & tmpconf .sdexec_stop_timer_sec ,
281+ "sdexec-stop-timer-signal" ,
282+ & tmpconf .sdexec_stop_timer_signal ) < 0 ) {
283+ errprintf (errp ,
284+ "error reading config values exec.sdexec-stop-timer-sec: %s"
285+ " or exec.sdexec-stop-timer-signal" ,
286+ err .text );
287+ return -1 ;
288+ }
289+
252290 /* Check configuration for exec.barrier-timeout */
253291 if (flux_conf_unpack (conf ,
254292 & err ,
0 commit comments