From a3e0712e5de17f0fe2775dda9ecfbbba3e475f8a Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Wed, 27 Nov 2013 09:41:00 -0800 Subject: [PATCH] select/cray: Add apbasil open retry logic --- src/plugins/select/cray/libalps/basil_request.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/select/cray/libalps/basil_request.c b/src/plugins/select/cray/libalps/basil_request.c index 4b2335b1f3c..4dc93f43e8e 100644 --- a/src/plugins/select/cray/libalps/basil_request.c +++ b/src/plugins/select/cray/libalps/basil_request.c @@ -7,6 +7,7 @@ */ #include "parser_internal.h" #include <stdarg.h> +#include <unistd.h> int log_sel = -1; char *xml_log_loc = NULL; @@ -190,9 +191,9 @@ static void _rsvn_write_reserve_xml(FILE *fp, struct basil_reservation *r, int basil_request(struct basil_parse_data *bp) { int to_child, from_child; - int ec, rc = -BE_UNKNOWN; + int ec, i, rc = -BE_UNKNOWN; FILE *apbasil; - pid_t pid; + pid_t pid = -1; DEF_TIMERS; if (log_sel == -1) @@ -206,7 +207,11 @@ int basil_request(struct basil_parse_data *bp) assert(bp->method > BM_none && bp->method < BM_MAX); START_TIMER; - pid = popen2(cray_conf->apbasil, &to_child, &from_child, true); + for (i = 0; ((i < 10) && (pid < 0)); i++) { + if (i) + usleep(100000); + pid = popen2(cray_conf->apbasil, &to_child, &from_child, true); + } if (pid < 0) fatal("popen2(\"%s\", ...)", cray_conf->apbasil); -- GitLab