The orchestrator code seems to me to be too complicated because it is trying to accommodate both simple, direct job submission and threaded "pull" submission in the same code. How about splitting these into two separate implementations of the Orchestrator interface:
* SimpleOrchestratorImpl.java: this just handles direct job submission with threadpool. size=0 and is for basic testing and instructional purposes. * PullBasedOrchestrator.java: this is the current code with all the direct job submission stuff removed. Threadpool.size >0 or else throw an exception. Submissions are done asynchronously by pulling ready jobs from the registry. You may want to split EmbeddedGFACJobSubmitter into two different implementations of JobSubmitter as well. Marlon
