The processing of workunits and results can be described in terms of transitions of their state variables.

Workunit state variables

Workunits parameters are described here.

Workunit state variables are as follows: "; list_start(); list_item( "canonical_resultid", "The ID of the canonical result for this workunit, or zero.

" ); list_item("transition_time", "The next time to check for state transitions for this WU. " ); list_item("file_delete_state", "Indicates whether input files should be deleted. " ); list_item("assimilate_state", "Indicates whether the workunit should be assimilated. " ); list_item("need_validate", "Indicates that the workunit has a result that needs validation. " ); list_item("error_mask", "A bit mask for error conditions. " ); list_end(); echo " Workunit invariants:

Notes on deletion of input files:

Result state variable

Result state variables are listed in the following table: "; list_start(); list_item("report_deadline", "Give up on result (and possibly delete input files) if don't get reply by this time. " ); list_item("server_state", "Values: UNSENT, IN_PROGRESS, OVER " ); list_item("outcome", "Values: SUCCESS, COULDNT_SEND, CLIENT_ERROR, NO_REPLY, DIDNT_NEED, VALIDATE_ERROR, CLIENT_DETACHED.
Defined iff result.server_state=OVER " ); list_item("client_state", "Records the client state (DOWNLOADING, DOWNLOADED, COMPUTE_ERROR, UPLOADING, UPLOADED, ABORTED) where an error occurred. Defined if outcome is CLIENT_ERROR. " ); list_item("file_delete_state", " " ); list_item("validate_state", " Defined iff result.outcome=SUCCESS " ); list_end(); echo "

Result invariants:

Notes on deletion of output files: How do we delete output files that arrive REALLY late? (e.g. uploaded after all results have timed out, and never reported)? Possible answer: let X = create time of oldest unassimilated WU. Any output files created before X can be deleted. "; page_tail(); ?>