diff --git a/CHANGELOG.md b/CHANGELOG.md index b49a38a44..1513415fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Fixed +- Fixed bug where LSF adapter would sometimes return `nil` when getting job + info. [#75](https://github.com/OSC/ood_core/issues/75) - Fixed list of allocated nodes for LSF adapter when single node is expanded for each core. [#71](https://github.com/OSC/ood_core/issues/71) - Clean up children processes in forked Batch Connect main script before diff --git a/lib/ood_core/job/adapters/lsf.rb b/lib/ood_core/job/adapters/lsf.rb index 816c83ad4..d39681b1b 100644 --- a/lib/ood_core/job/adapters/lsf.rb +++ b/lib/ood_core/job/adapters/lsf.rb @@ -89,7 +89,14 @@ def submit(script, after: [], afterok: [], afternotok: [], afterany: []) def info(id) # TODO: handle job arrays job = batch.get_job(id: id) - job ? info_for_batch_hash(job) : nil + if job + info_for_batch_hash(job) + else + Info.new( + id: id, + status: :completed + ) + end rescue Batch::Error => e raise JobAdapterError, e.message end diff --git a/spec/job/adapters/lsf_spec.rb b/spec/job/adapters/lsf_spec.rb index e08266a56..a0fc50576 100644 --- a/spec/job/adapters/lsf_spec.rb +++ b/spec/job/adapters/lsf_spec.rb @@ -117,6 +117,14 @@ def build_script(opts = {}) it "returns running status with info attrs mapped" do expect(adapter.info("542935")).to eq(expected_info) end + + context "when can't find job" do + let(:batch) { double(get_job: nil) } + + it "returns completed OodCore::Job::Info object" do + expect(adapter.info("542935")).to eq(OodCore::Job::Info.new(id: "542935", status: :completed)) + end + end end describe "#info_all" do