oxidecomputer / oxidecomputer/sush
Abort prior to Start should be a no-op
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 3
- Forks
- 0
- Avg merge
- 9d 12h
- Merged PRs (30d)
- 11
Description
We hold that an operator should require Oxide Support to authorize skipping a job in a sequence of jobs in the session. That's why job-skip is an authorized action signed by Oxide Support.
Unfortunately, the current implementation has a hole: you can abort a job by (known) job ID prior to submitting it, which will pre-emptively abort the job. The effect: the job is skipped, and it was not required to get a signature from Oxide Support. This undermines the guarantee that signed jobs hash-chain onto one another such that the sequence of started jobs on any sled is a prefix of the hash-chain of jobs.
I think we should fix this so that aborting a not-yet-known job is a no-op.
Technically, this does not close the hole entirely because there's still a race where if other jobs are queued, you can abort the job before it runs... but this will always stand if we want the operator to be able to abort jobs without a signature from Oxide, and we have ruled that this is desirable. Perhaps worth briefly revisiting to ensure we stand by that.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the job-abort handling for requests naming a job ID before that job has been submitted. Verify the behavior for an unknown or not-yet-known job, then add or update coverage so aborting it has no effect while preserving the existing authorized skip behavior. Done means a pre-start abort cannot cause the job to be skipped.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- security
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100