package com.dgrid.threads; import java.util.concurrent.Callable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.dgrid.errors.TransportException; import com.dgrid.gen.InvalidApiKey; import com.dgrid.gen.InvalidJobletId; import com.dgrid.gen.JOB_STATUS; import com.dgrid.gen.Joblet; import com.dgrid.gen.JobletResult; import com.dgrid.service.DGridClient; import com.dgrid.util.io.HostnameDiscovery; public class DGridRunnable implements Callable<JobletResult> { private Log log = LogFactory.getLog(getClass()); private DGridClient client; private Joblet joblet; public DGridRunnable(DGridClient client, Joblet joblet) { this.client = client; this.joblet = joblet; } public Joblet getJoblet() { return joblet; } public JobletResult call() throws Exception { log.trace("call()"); try { client.log(joblet.getId(), JOB_STATUS.PROCESSING, String.format( "Joblet %1$d started on %2$s", joblet.getId(), HostnameDiscovery.getHostname())); } catch (TransportException e) { log.warn("TransportException calling client.log()", e); } catch (InvalidApiKey e) { log.warn("InvalidApiKey calling client.log()", e); } catch (InvalidJobletId e) { log.warn("InvalidJobletId calling client.log()", e); } catch (Exception e) { log.warn("Exception calling client.log()", e); } JobletResult result = client.executeJoblet(joblet); return result; } }