Version 2 (modified by 15 years ago) (diff) | ,
---|
Trickle message implementation
On the science app API, boinc_send_trickle_up()
creates a file 'trickle_up.xml' in the slot directory and signals the core client via shared memory. When the core client gets this signal, or when the application exits, it moves the file from 'slot/trickle_up.xml' to 'project/trickle_up_resultname_time.xml'.
When the core client sends an RPC to a server, it scans the project directory for these trickle-up files includes them in the request, and appends '.sent' to their filenames. On successful RPC completion it deletes trickle-up files that were sent earlier.
On the server, messages are stored in database tables 'trickle_up' and 'trickle_down'. The scheduling server extracts trickle messages from the request message and inserts them in the trickle_up table. If the 'trickle_down' flag in the configuration is set, it scans the database for trickle-down messages for this host and includes them in the reply message, setting the 'handled' flag in the DB record.
The client parses trickle-down messages in the scheduler reply, creates files of the form trickle_down_createtime_id in the slot directory, and signals the app via shared memory that a message is available.