private void pollJobs(WebServiceWorkerI worker)
{
+ boolean done;
try
{
- worker.pollJobs();
+ done = worker.pollJobs();
} catch (Exception e)
{
Cache.log.error("Failed to poll web service jobs.", e);
wsThreadSupport.pollFailed(worker, e);
return;
}
- if (!worker.isDone())
+ if (!done)
{
executor.schedule(() -> pollJobs(worker), 1, TimeUnit.SECONDS);
}
@Override
public void startJobs() throws IOException
{
+ Cache.log.info(format("Starting new %s job.", service.getName()));
String outputHeader = String.format("%s of %s%nJob details%n",
submitGaps ? "Re-alignment" : "Alignment", alnTitle);
SequenceI[][] conmsa = msa.getVisibleContigs('-');
WSJob job = new WSJob(service.getProviderName(), service.getName(),
service.getHostName());
job.setJobNum(wsInfo.addJobPane());
- if (conmsa.length > 0)
+ if (conmsa.length > 1)
{
wsInfo.setProgressName(String.format("region %d", i),
job.getJobNum());
boolean done = true;
for (WSJob job : getJobs())
{
- if (!job.getStatus().isDone())
+ if (!job.getStatus().isDone() && !job.getStatus().isFailed())
{
Cache.log.debug(format("Polling job %s.", job));
try
Cache.log.debug(
format("Job %s status is %s", job, job.getStatus()));
}
- done &= job.getStatus().isDone();
+ done &= job.getStatus().isDone() || job.getStatus().isFailed();
}
updateWSInfoGlobalStatus();
return done;