SimFactory does not correctly detect a failed submit command

Issue #886 closed
Ian Hinder created an issue

If qsub can't be found, simfactory doesn't notice that the command returned a nonzero exit code, and proceeds to return 0 itself. The submit command is in simrestart.py:

        output = simlib.ExecuteCommand(submitCommand, output=True)

This should check that the exit code is zero, or fail noisily. What it actually does is

        fd = os.popen(command)
        output = fd.read()
        fd.close()

        return output

Apart from the weird reuse of the output input argument as a return value for something else, it is not checking the exit code in the case where the output was requested.

Keyword:

Comments (3)

  1. Erik Schnetter
    • removed comment

    Simfactory's way of calling external shell scripts is "interesting". I would catch this problem at a later stage, when the output of the qsub command is parsed. If the regular expression doesn't match, the job id is -1. Simfactory first outputs the job id, and then a less-than helpful message "if the job id output above is -1, job submission failed". Instead, it should check the job id, and fail loudly.

  2. Roland Haas
    • edited description
    • changed status to resolved

    Simfactory checks for error in (all) ExecuteCommand calls since git hash a38ff13 "check errors when calling ExecuteCommand(...,output=True)" of simfactory2 from Fri Jul 10 11:32:55 2015 +0200. This includes the call in submit, which forces the jobid to be "-1" in this case and reports an error to the user (but does not return a non-zero exit code to the shell).

  3. Log in to comment