Skip to content

Commit

Permalink
sched/validator: DON'T set assimilate_state by the validator.
Browse files Browse the repository at this point in the history
- The assimilator may have already started to assimilate this WU.
  The validator may take quite some time to chew through a chunk of workunits.
  Resetting the assimilate_state after that may be harmful and override the
  update made by the assimilator.
  Instead, let the transitioner decide what to do with this workunit.

- Also too, avoid overriding a non-zero error mask
  • Loading branch information
bema-aei committed Jul 24, 2024
1 parent 5d1d4c5 commit bed25a8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
5 changes: 3 additions & 2 deletions db/boinc_db.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2032,8 +2032,9 @@ int DB_VALIDATOR_ITEM_SET::update_workunit(WORKUNIT& wu) {
char query[MAX_QUERY_LEN];

sprintf(query,
"update workunit set need_validate=0, error_mask=%d, "
"assimilate_state=%d, transition_time=%d, "
"update workunit set need_validate=0, "
"error_mask=error_mask|%d, "
"transition_time=%d, "
"target_nresults=%d, "
"canonical_resultid=%lu, canonical_credit=%.15e "
"where id=%lu",
Expand Down
6 changes: 5 additions & 1 deletion sched/validator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,11 @@ int handle_wu(
);
wu.canonical_resultid = canonicalid;
wu.canonical_credit = credit;
wu.assimilate_state = ASSIMILATE_READY;

// DON'T modify assimilate_state here, under bad conditions the
// assimilator may have already started to work on this WU.
// Instead, let the transitioner decide what to do with it.
transition_time = IMMEDIATE;

// don't need to send any more results
//
Expand Down

0 comments on commit bed25a8

Please sign in to comment.