Hi,

I am recently reading the code of the GroomServer and trying to figure out
the workflow. The following is my understanding, please correct me if I am
wrong.

I already know the following steps:
1. When initializing, the GroomServer will create an instructor, who will
buffer the incoming directive instance (a wrapper of action that can
launch, recover, or kill a task?).
2. The instance will be handled by the DispatchTasksHandler.
3. If the action is launched, then a couple of things will be done in the
order: DispatchTasksHandler.startNewTask -> GroomServer.localizeJob ->
GroomServer.launchTaskForJob -> TaskInProgress.launchTask .
I haven't figure out why a couple of distinct BSPJob instances are created
in these steps.
4. A TaskRunner will be created to run the task. Further, a BSPChildRunner
instance will be created. When the BSPChildRunner instance (a thread) been
scheduled and executed, it will create a process to execute
the BSPPeerChild.
5. BSPChildRunner will create a BSPPeerImpl and it will be executed by a
BSPTask (BSPTask.run -> BSPTask.runBSP).
6. BSPPeerImpl will execute its setup, bsp, and cleanup method, which will
be implemented by the end user.

Regards,
Yexi

Reply via email to