/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
import jalview.ws.jws2.dm.JabaWsParamSet;
import jalview.ws.params.WsParamSetI;
-/**
- * <p>
- * Title:
- * </p>
- *
- * <p>
- * Description:
- * </p>
- *
- * <p>
- * Copyright: Copyright (c) 2004
- * </p>
- *
- * <p>
- * Company: Dundee University
- * </p>
- *
- * @author not attributable
- * @version 1.0
- */
class MsaWSThread extends AWS2Thread implements WSClientI
{
boolean submitGaps = false; // pass sequences including gaps to alignment
updateJobProgress(j);
}
- protected void updateJobProgress(MsaWSJob j) throws Exception
+ /**
+ *
+ * @param j
+ * @return true if more job progress data was available
+ * @throws Exception
+ */
+ protected boolean updateJobProgress(MsaWSJob j) throws Exception
{
StringBuffer response = j.jobProgress;
long lastchunk = j.getLastChunk();
+ boolean changed=false;
do
{
j.setLastChunk(lastchunk);
.pullExecStatistics(j.getJobId(), lastchunk);
if (chunk != null)
{
+ changed=chunk.getChunk().length()>0;
response.append(chunk.getChunk());
lastchunk = chunk.getNextPosition();
}
;
} while (lastchunk >= 0 && j.getLastChunk() != lastchunk);
+ return changed;
}
public void StartJob(AWsJob job)
MsaWSJob msjob = ((MsaWSJob) jobs[j]);
if (jobs[j].isFinished() && msjob.alignment == null)
{
- try
- {
- updateJobProgress(msjob);
- } catch (Exception e)
- {
- Cache.log
- .warn("Exception when retrieving remaining Job progress data for job "
- + msjob.getJobId() + " on server " + WsUrl);
- e.printStackTrace();
- }
+ boolean jpchanged=false,jpex=false;
+ do {
+ try
+ {
+ jpchanged = updateJobProgress(msjob);
+ jpex=false;
+ } catch (Exception e)
+ {
+
+ Cache.log
+ .warn("Exception when retrieving remaining Job progress data for job "
+ + msjob.getJobId() + " on server " + WsUrl);
+ e.printStackTrace();
+ if (jpex) {
+ // give up polling after two consecutive exceptions
+ jpchanged=false;
+ } else {
+ jpchanged=true;
+ }
+ // set flag remember that we've had an exception.
+ jpex=true;
+ }
+ if (jpchanged)
+ {
+ try
+ {
+ Thread.sleep(jpex ? 400 : 200); // wait a bit longer if we experienced an exception.
+ } catch (Exception ex)
+ {
+ }
+ ;
+ }
+ } while (jpchanged);
+
if (Cache.log.isDebugEnabled())
{
System.out.println("Job Execution file for job: "