lsf-python-api icon indicating copy to clipboard operation
lsf-python-api copied to clipboard

How to kill array jobs using lsb_forcekilljob?

Open rajathpatil opened this issue 4 years ago • 4 comments

How do i pass an array jobs to the function lsb_forcekilljob to be killed?

Passing an array job, lsf.lsb_forcekilljob(337400[4]) throws the following error: Traceback (most recent call last): File "/data/cmetrics/lsf_test.py", line 64, in lsf.lsb_forcekilljob(337400[4]) TypeError: 'int' object has no attribute 'getitem'

Also how do i pass a group of jobs to be killed at once?

rajathpatil avatar May 17 '21 18:05 rajathpatil

Have you ever downloaded the LSF command line source code from FixCentral? It's available. Since the API is based upon SWIG, you can translate almost directly.

adamsla avatar May 17 '21 20:05 adamsla

You should be able to order and download the sample code from here. Look forward to your pull request. https://www.ibm.com/support/fixcentral/swg/doSelectFixes?options.selectedFixes=lsf-10.1-build427553&continue=1

adamsla avatar May 17 '21 20:05 adamsla

adamsla, Yes I have used LSF command line. The array jobs can be killed by enclosing it in quotes. However lsb_forcekilljob only takes parameters in LONG_INT so cannot pass it array jobs within quotes, it errors out.

rajathpatil avatar May 20 '21 12:05 rajathpatil

Sure, I think the bulk kill is using a unsigned long long that includes both the jobid and the indexid as a single integer. So, there is a macro you can find in the lsbatch.h I think that is something to the affect of the following, which I just clipped out of the code (removing stuff that looks proprietary):

#define LSB_JOBID(array_jobId, array_idx) { blah }
#define LSB_JOBID2(array_jobId, array_idx) { blah blah }
#define LSB_ARRAY_IDX(jobId) { blah blah blah }

It would be nice to see a pull request from someone who can detect the bracketed notation and convert it into something that the API recognizes.

adamsla avatar May 20 '21 12:05 adamsla