wiki:TrickleMessages

Version 4 (modified by Nicolas, 15 years ago) (diff)

Minor rewording. Move a general-description paragraph to the intro (was in "trickle down" section).

Trickle messages

Trickle messages let applications communicate with the server during the execution of a workunit. They are intended for applications that have long workunits (multiple days).

Messages are XML documents, and they may go from client to server or vice-versa.

Trickle messages are asynchronous, ordered, and reliable. Since they are conveyed in scheduler RPC messages, they may not be delivered immediately after being generated.

Trickle-up messages

Trickle-up messages go from application to server. They are handled by trickle handler daemons running on the server. Each message is tagged with a 'variety' (a character string). Each daemon handles messages of a particular variety. (This is used, typically, to distinguish different applications.) Example uses:

  • The application sends a trickle-up message containing its current CPU usage, so that users can be granted incremental credit (rather than waiting until the end of the work unit).
  • The application sends a trickle-up message containing a summary of the computational state, so that server logic can decide if the computation should be aborted.

To create a trickle handler daemon, modify the program sched/trickle_handler.cpp, replacing the function handle_trickle() with your own function. Add an entry in your config.xml to run this program as a daemon.

Trickle-down messages

Trickle-down messages go from server to application. Each one is addressed to a particular host, and must include an element <result_name> identifying the result to which the message is addressed. If that result is still running on the host, it is delivered to it. Example uses:

  • The server sends a message telling the application to abort.
  • The server sends a message containing the user's current total credit.