| 1 | = Pinning jobs to app version numbers = |
| 2 | |
| 3 | BOINC's default behavior is to process jobs with the latest app versions. |
| 4 | |
| 5 | During the lifetime of an app, there may be changes that are not backward compatible, e.g.: |
| 6 | |
| 7 | * A new version uses a different input file format |
| 8 | * A new version produces output that won't validate against older versions. |
| 9 | |
| 10 | If the new version is introduced while there are still older jobs in the system, |
| 11 | jobs will fail and/or not validate. |
| 12 | |
| 13 | One alternative is to stop adding jobs until there are no jobs in progress, |
| 14 | then add the new app versions and resume creating jobs. |
| 15 | This can cause lots of unused capacity. |
| 16 | |
| 17 | Another option is to create a new app. |
| 18 | This can cause various problems, e.g. invalidating user configurations |
| 19 | and app selection settings. |
| 20 | |
| 21 | == Job pinning == |
| 22 | |
| 23 | A third option is to '''pin''' jobs to a particular app version number. |
| 24 | For example, |
| 25 | {{{ |
| 26 | create_work --app_version_num 405 ... |
| 27 | }}} |
| 28 | means that the job is to be processed only by app versions with version number 415 (i.e. 4.15). |
| 29 | |
| 30 | The default is 0, meaning that the job is processed using the latest version. |
| 31 | |
| 32 | In addition, you must tell BOINC what the earliest usable version for the app is, |
| 33 | i.e. the lowest version number for jobs currently in progress. |
| 34 | Do this by setting the "min_version" field in the app's DB entry. |
| 35 | The easiest way to do this is to change the project.xml, e.g. |
| 36 | {{{ |
| 37 | <app> |
| 38 | <name>uppercase</name> |
| 39 | <user_friendly_name>upperCASE</user_friendly_name> |
| 40 | <min_version>415</min_version> |
| 41 | </app> |
| 42 | }}} |
| 43 | and then run [XaddTool xadd]. |