Skip to content

[Code scan] Handle header-only LSF and JH status output #610

Description

@njzjz

Found by a Codex global repository scan of deepmodeling/dpdispatcher at commit 98a9e08.

Problem
LSF and JH_UniScheduler status parsing assumes a second output line always contains job data. Header-only output with a trailing newline produces an empty second line, then split()[2] raises IndexError.

Relevant code

status_out = stdout.read().decode("utf-8").split("\n")
if len(status_out) < 2:
return JobStatus.unknown
else:
status_line = status_out[1]
status_word = status_line.split()[2]

status_out = stdout.read().decode("utf-8").split("\n")
if len(status_out) < 2:
return JobStatus.unknown
else:
status_line = status_out[1]
status_word = status_line.split()[2]

Impact
Polling can crash when a scheduler returns only headers for a completed, expired, or missing job instead of falling back to finish-tag logic.

Suggested fix
Strip empty lines, require a data row before indexing, and if no data row exists check the finish tag and otherwise return a terminal/unknown state intentionally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions