Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-10 08:39:07

0001 import optparse
0002 import time
0003 
0004 # password
0005 from pandaserver.config import panda_config
0006 from pandaserver.taskbuffer.OraDBProxy import DBProxy
0007 from pandaserver.userinterface import Client
0008 
0009 option_parser = optparse.OptionParser(conflict_handler="resolve")
0010 option_parser.add_option(
0011     "-9",
0012     action="store_const",
0013     const=True,
0014     dest="forceKill",
0015     default=False,
0016     help="kill jobs before next heartbeat is coming",
0017 )
0018 options, args = option_parser.parse_args()
0019 
0020 useMailAsIDV = False
0021 if options.killOwnProdJobs:
0022     useMailAsIDV = True
0023 
0024 proxyS = DBProxy()
0025 proxyS.connect(panda_config.dbhost, panda_config.dbpasswd, panda_config.dbuser, panda_config.dbname)
0026 
0027 jobs = []
0028 
0029 varMap = {}
0030 varMap[":prodSourceLabel"] = "managed"
0031 varMap[":taskID"] = args[0]
0032 varMap[":pandaIDl"] = args[1]
0033 varMap[":pandaIDu"] = args[2]
0034 sql = "SELECT PandaID FROM %s WHERE prodSourceLabel=:prodSourceLabel AND taskID=:taskID AND PandaID BETWEEN :pandaIDl AND :pandaIDu ORDER BY PandaID"
0035 for table in [
0036     "ATLAS_PANDA.jobsActive4",
0037     "ATLAS_PANDA.jobsDefined4",
0038 ]:
0039     status, res = proxyS.querySQLS(sql % table, varMap)
0040     if res is not None:
0041         for (id,) in res:
0042             if id not in jobs:
0043                 jobs.append(id)
0044 
0045 print(f"The number of jobs to be killed : {len(jobs)}")
0046 if len(jobs):
0047     nJob = 100
0048     iJob = 0
0049     while iJob < len(jobs):
0050         print(f"kill {str(jobs[iJob:iJob + nJob])}")
0051         if options.forceKill:
0052             Client.kill_jobs(jobs[iJob : iJob + nJob], 9)
0053         else:
0054             Client.kill_jobs(jobs[iJob : iJob + nJob])
0055         iJob += nJob
0056         time.sleep(1)