wiki:ClientDataModel

Version 4 (modified by davea, 13 years ago) (diff)

--

Client data model

This document describes proposed changes to the client to support distributed storage.

Current

FILE_INFO elements

  • status (present, not present, error)
  • urls
  • bool generated_locally
  • bool upload_when_present
  • bool uploaded
  • bool sticky

Problems

Many. Example: suppose the server asks the client to upload a file that the client doesn't have. Since generated_locally is false and the file is not present, the client will try to download it (from the upload URL!).

Proposed

FILE_INFO elements:

  • status
  • upload_urls
  • download_urls
  • bool defer_upload
  • bool uploaded
  • bool sticky

Policy:

  • If a file has a download URL and is not present, download it
  • If a file has an upload URL, is present, and defer_upload is not set, upload it

Handling <file_info> elements in scheduler replies:

  • if referenced from an app version or workunit, store URLs in download_urls
  • if referenced from a result, store URL in upload_urls.

Handling upload requests:

  • Clear "uploaded" flag
  • If the file isn't there, mark result as error.

Locally-generated input files

One (hypothetical) class of files isn't handled by the above: an input file which, if not present, is generated computationally by the app. Such files must be handled outside of BOINC. In particular, the app must use file locking to ensure that two jobs don't try to generate the file at the same time.