wiki:TrickleMessages

Version 1 (modified by Nicolas, 17 years ago) (diff)

First page converted with my automatic script. Needs manual editing, but far less than doing it all manually.

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).

Trickle messages may from client to server or vice versa. Messages are XML documents.

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.C, 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.

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