Progress Report (2002/04/17) - Kevin Chu

I have continued to work on the underlying infrastructure to support the distributed computing framework. At present time, the foundational code for both the server and the volunteer node daemons has been written. This involved implementing the basic controls and communication infrastructure using Java networking, threads, remote object invokation (RMI), and dynamic class loading components.

A user of the system writes Task objects and a main program that packages the Tasks into a JobDefinition which is submitted to the server via a Grapevine system object (this will probably be changed to be a singleton class which only has static public methods).

The basic server components have been built. These include a JobManager that handles requests from clients for job submission and control and a VolunteerManager that handles registration/status of volunteer nodes and allocation of nodes for Jobs. Remote Job objects also reside on the server and are accessible by clients and volunteer nodes for control, status, etc. purposes.

The basic volunteer node components have been built. These include a TaskManager which serves a similar role to the JobManager, a GrapevineClassLoader that allows us to dynamically load classes that are not in the classpath when the volunteer node was started up, and a TaskWrapper that is the shell that holds tasks.

Open Issues

  1. Make sure that tasks that require multiple executable files work. This may require doing something fancy with the SecurityManager.
  2. Finish implementing status reporting.
  3. Finish implementing the means for returning results to the user.
  4. Making the installation process for volunteers easy.
  5. Check to make sure the volunteer system works on non-Unix platforms.