diff --git a/bsubmit/bsubmit.cpp b/bsubmit/bsubmit.cpp index f8d080a..c31e8aa 100644 --- a/bsubmit/bsubmit.cpp +++ b/bsubmit/bsubmit.cpp @@ -29,6 +29,11 @@ #include #include +#include + +#define WAIT_TIME 2 +#define NTRIES 30 + const bool BSUB_DEBUG = false; @@ -308,16 +313,38 @@ int changeUser(char * execUser) } uid_t execuid = execpsw->pw_uid; - std::string clustername = getClusterName(); - if (clustername.empty()) { - //std::cout << "Cannot get LSF cluster name" << std::endl; - return -1; + std::string clustername; + int lcv = 0; + while(lcv <= NTRIES) { + lcv++; + clustername = getClusterName(); + if (clustername.empty()) { + std::cout << "Cannot get LSF cluster name" << std::endl; + if (lcv >= NTRIES) { + return -1; + } + sleep(WAIT_TIME); + } + else { + break; + } } - std::vector admins = getClusterAdmin(clustername); - if (admins.size() < 1) { - //std::cout << "Cannot get cluster admins" << std::endl; - return -1; + std::vector admins; + lcv = 0; + while(lcv <= NTRIES) { + lcv++; + admins = getClusterAdmin(clustername); + if (admins.size() < 1) { + std::cout << "Cannot get cluster admins" << std::endl; + if (lcv >= NTRIES) { + return -1; + } + sleep(WAIT_TIME); + } + else { + break; + } } std::string mappingfile = getMappingFilePath();