Changes between Initial Version and Version 1 of ValidationLowLevel


Ignore:
Timestamp:
Apr 23, 2007, 1:01:52 PM (17 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ValidationLowLevel

    v1 v1  
     1= Low-level validator framework =
     2
     3BOINC's [SimpleValidator simple validator framework] is sufficient in almost all cases. If for some reason you need more control, you can use the low-level framework (on which the simple framework is based).
     4
     5To make a validator program using the low-level framework, link validator.C with two application-specific functions:
     6{{{
     7int check_set(
     8    vector<RESULT> results, DB_WORKUNIT& wu, int& canonicalid,
     9    double& credit, bool& retry
     10);
     11}}}
     12    * '''check_set()''' takes a set of results (all with outcome=SUCCESS). It reads and compares their output files. If there is a quorum of matching results, it selects one of them as the canonical result, returning its ID. In this case it also returns the credit to be granted for correct results for this workunit.
     13    * If, when an output file for a result has a nonrecoverable error (e.g. the directory is there but the file isn't, or the file is present but has invalid contents), then it must set the result's outcome (in memory, not database) to outcome=RESULT_OUTCOME_VALIDATE_ERROR and validate_state=VALIDATE_STATE_INVALID.
     14
     15      Use BOINC's [http://boinc.berkeley.edu/backend_util.php back-end utility functions] (in sched/validate_util.C) to get file pathnames and to distinguish recoverable and nonrecoverable file-open errors.
     16    * If a canonical result is found, check_set() must set the validate_state field of each non-ERROR result (in memory, not database) to either validate_state=VALIDATE_STATE_VALID or validate_state=VALIDATE_STATE_INVALID.
     17    * If a recoverable error occurs while reading output files (e.g. a directory wasn't visible due to NFS mount failure) then check_set() should return retry=true. This tells the validator to arrange for this WU to be processed again in a few hours.
     18    * check_set() should return nonzero if a major error occurs. This tells the validator to write an error message and exit.
     19
     20{{{
     21int check_pair(RESULT& new_result, RESULT& canonical_result, bool& retry);
     22}}}
     23    * '''check_pair()''' compares a new result to the canonical result. In the absence of errors, it sets the new result's validate_state to either VALIDATE_STATE_INVALID or VALIDATE_STATE_VALID.
     24    * If it has a nonrecoverable error reading an output file of either result, or if the new result's output file is invalid, it must set the new result's outcome (in memory, not database) to VALIDATE_ERROR.
     25    * If it has a recoverable error while reading an output file of either result, it returns retry=true, which causes the validator to arrange for the WU to be examined again in a few hours.
     26    * check_pair() should return nonzero if a major error occurs. This tells the validator to write an error message and exit.
     27
     28Neither function should delete files or access the BOINC database.
     29
     30Examples of these two functions may be found in validate_util2.C, which implements the [SimpleValidator simple validator framework].
     31
     32More detailed information is [http://boinc.berkeley.edu/validate_logic.txt here].