diff --git a/Script/CastorScript.py b/Script/CastorScript.py index 9f0b9305ba5f8dcedfc3cbea46fe32ee59d37843..25dffebce01df0fe34bf269df9607f860741df29 100755 --- a/Script/CastorScript.py +++ b/Script/CastorScript.py @@ -187,6 +187,17 @@ def main(conf): lastdbconn = time(); DBTimeout = conf.DBTimeout DBReconnectTimeout = conf.DBReconnectTimeout + + + ##### Setup Kerberos if needed ##### + if conf.keytab: + + krb_setcache(conf.krbcache,logger) + krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger) + if not krb_exp: + logger.error('Could not initialize kerberos ticket. Giving up!') + return + ##### Start the threads ##### manager.start() @@ -195,12 +206,6 @@ def main(conf): if conf.ERSenabled: check.start() logger.info('Manager,Copy, Delete and Check Threads started') - - ##### Setup Kerberos if needed ##### - if conf.keytab: - - krb_setcache(conf.krbcache,logger) - krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger) ##### Every DBTimeout check if connection to Oracle database is still good ##### while not exitFlag: @@ -245,8 +250,12 @@ def main(conf): # Update KRB token, if needed: if conf.keytab: now = datetime.datetime.now() - if now >= krb_exp or (krb_exp-now).seconds < 3600: + if not krb_exp: + #Previous update failed, we try again + krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger) + elif now >= krb_exp or (krb_exp-now).seconds < 3600: krb_exp = krb_updatetoken(conf.keytab, conf.krbuser, logger) + #Check worker states if not (manager.isAlive() and copy.isAlive() and delete.isAlive()):