Document toolboxDocument toolbox

Submission Cancellation

Background

Some submission are runnable. When a user submits a runnable submission to a queue, the queue's Submission Application would check and start the runnable process. This process could take a long time. We want to provide users the ability to stop their running process at anytime that it is running.

PLFM-4091 - Getting issue details... STATUS

Current Work Flow

When a user A submits a submission B to queue C, an Submission (immutable object) and SubmissionStatus (mutable object) are created.

Queue C's Application starts the running process for submission B and update submission B's Submission Status.

Proposal

Add the following fields to Submission Status:

Submission Status
currentFields
canCancel : Boolean (Default FALSE)
cancelRequested : Boolean (Default FALSE)

When the queue's Application starts the running process, it would change canCancel to TRUE.

Add an API that allows user to request to cancel their submissions:

ActionIntended UsersURIMethodRequest ParamsRequest BodyResponse Body
Request to Cancel a SubmissionThe user who submitted the Submission/evaluation/submission/{subId}/cancellationPUTNoneNoneNone

When a user make such request, we will check for:

  • Is the user who making the request submitted the submission?
  • Is canCancel's value for the request submission TRUE?

If both conditions are met, we will set the cancelRequested value to TRUE and return 200. We will throw an appropriate 400 status code for error.

The queue's Application are responsible to check for cancelRequested value and update SubmissionStatus appropriately.

Queryable Annotations

Both canCancel and cancelRequested will be added to the list of Queryable Annotations. We will also add CancelControl object to this list.

CancelControl
submissionId : String
userId : String
canCancel : Boolean
cancelRequested : Boolean

Notes:

  • Add CANCELLED as a submission status in the SubmissionStatus enum.