diff --git a/src/common/gres.c b/src/common/gres.c index 798ef8c91c6c267ab190a3cd9c65e71e13429ce0..b47a3bc67a5a30d60a015b52b1a3415501b585bc 100644 --- a/src/common/gres.c +++ b/src/common/gres.c @@ -338,6 +338,9 @@ extern int gres_plugin_init(void) int i, j, rc = SLURM_SUCCESS; char *last = NULL, *names, *one_name, *full_name; + if (gres_context_cnt >= 0) + return rc; + slurm_mutex_lock(&gres_context_lock); if (slurm_get_debug_flags() & DEBUG_FLAG_GRES) gres_debug = true; diff --git a/src/common/mpi.c b/src/common/mpi.c index 9ecdf1da837a8e9ef7ab4d88819e03d73964fc8a..d5c2d6054e2746abf600ba48a09e5d1b05cbbd0c 100644 --- a/src/common/mpi.c +++ b/src/common/mpi.c @@ -211,6 +211,9 @@ int _mpi_init (char *mpi_type) char *full_type = NULL; int got_default = 0; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/common/node_select.c b/src/common/node_select.c index 10c6c8d2937ecd55d2512f5f3c13e68d7c0be0d8..d2bbd0c9825f0b21a20faea92bd0618f90c63fb3 100644 --- a/src/common/node_select.c +++ b/src/common/node_select.c @@ -281,6 +281,9 @@ extern int slurm_select_init(bool only_default) struct dirent *e; char *dir_array = NULL, *head = NULL; + if ( select_context ) + return retval; + slurm_mutex_lock( &select_context_lock ); if ( select_context ) diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c index eff7577f784621feb06206077bfa4d55d40fe95f..056c185a473eb37cce14571d18fbe0634eb8d391 100644 --- a/src/common/slurm_accounting_storage.c +++ b/src/common/slurm_accounting_storage.c @@ -388,6 +388,9 @@ extern int slurm_acct_storage_init(char *loc) int retval = SLURM_SUCCESS; char *acct_storage_type = NULL; + if ( g_acct_storage_context ) + return retval; + slurm_mutex_lock( &g_acct_storage_context_lock ); if ( g_acct_storage_context ) diff --git a/src/common/slurm_auth.c b/src/common/slurm_auth.c index 264c605a712e41b7c4a805ab875dae5e63b91be6..652127f44305cab5f61fff6e4bdc9bc71c606a20 100644 --- a/src/common/slurm_auth.c +++ b/src/common/slurm_auth.c @@ -315,6 +315,9 @@ extern int slurm_auth_init( char *auth_type ) int retval = SLURM_SUCCESS; char *auth_type_local = NULL; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/common/slurm_jobacct_gather.c b/src/common/slurm_jobacct_gather.c index 66a1cef9ac5ae452409f3ab4f7dcc4cdb29a0556..3c07c1540533d4f4d97e8cefd8e6840a653f8369 100644 --- a/src/common/slurm_jobacct_gather.c +++ b/src/common/slurm_jobacct_gather.c @@ -258,6 +258,9 @@ static int _slurm_jobacct_gather_init(void) char *jobacct_gather_type = NULL; int retval=SLURM_SUCCESS; + if ( g_jobacct_gather_context ) + return(retval); + slurm_mutex_lock( &g_jobacct_gather_context_lock ); if ( g_jobacct_gather_context ) goto done; diff --git a/src/common/slurm_priority.c b/src/common/slurm_priority.c index ecb56b3b1acc93fecdc68b6d5a5172940fac29f6..a86432541f575313f9232e3e6a6a7b678045af59 100644 --- a/src/common/slurm_priority.c +++ b/src/common/slurm_priority.c @@ -198,6 +198,9 @@ extern int slurm_priority_init(void) int retval = SLURM_SUCCESS; char *priority_type = NULL; + if ( g_priority_context ) + return retval; + slurm_mutex_lock( &g_priority_context_lock ); if ( g_priority_context ) diff --git a/src/common/slurm_topology.c b/src/common/slurm_topology.c index a6ea794f6e552d4fc7891f987935846a428cfd53..8d4a265159e3c5d66bb47536407fade7f206c27f 100644 --- a/src/common/slurm_topology.c +++ b/src/common/slurm_topology.c @@ -207,6 +207,9 @@ slurm_topo_init( void ) int retval = SLURM_SUCCESS; char *topo_type = NULL; + if ( g_topo_context ) + return retval; + slurm_mutex_lock( &g_topo_context_lock ); if ( g_topo_context ) diff --git a/src/common/switch.c b/src/common/switch.c index bbfc9c9ae4e572c3155067bb32b9496e9c0d6b13..5a8ac8b16e840ad3fefac52b3564286d50e763ce 100644 --- a/src/common/switch.c +++ b/src/common/switch.c @@ -288,6 +288,9 @@ extern int switch_init( void ) int retval = SLURM_SUCCESS; char *switch_type = NULL; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/slurmctld/job_submit.c b/src/slurmctld/job_submit.c index 7ded61704201ac7265f90c435c25e9c9b1bd1b25..56c3e3b1467e1989501884ce7e5948d7562a0064 100644 --- a/src/slurmctld/job_submit.c +++ b/src/slurmctld/job_submit.c @@ -196,6 +196,9 @@ extern int job_submit_plugin_init(void) int rc = SLURM_SUCCESS; char *last = NULL, *names, *one_name; + if (submit_context_cnt >= 0) + return rc; + slurm_mutex_lock(&submit_context_lock); if (submit_context_cnt >= 0) goto fini; diff --git a/src/slurmctld/sched_plugin.c b/src/slurmctld/sched_plugin.c index 55d8908a9731c4cecceeaf9718dc090400a868d4..5b1229109b4594ae8ff38b3ab6e26adcd61346c2 100644 --- a/src/slurmctld/sched_plugin.c +++ b/src/slurmctld/sched_plugin.c @@ -225,6 +225,9 @@ slurm_sched_init( void ) int retval = SLURM_SUCCESS; char *sched_type = NULL; + if ( g_sched_context ) + return retval; + slurm_mutex_lock( &g_sched_context_lock ); if ( g_sched_context )