X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FMsaWSThread.java;h=f0602c43812bbb138483609e92c956aeb91ad559;hb=1fe15a0bb2006a51a24f4757c89337d99db4ad26;hp=4c75756cd37a92b3490f1984940dda2c39a6048a;hpb=e3947854073b52cf92a3f924deed0fda77dc88e6;p=jalview.git diff --git a/src/jalview/ws/jws2/MsaWSThread.java b/src/jalview/ws/jws2/MsaWSThread.java index 4c75756..f0602c4 100644 --- a/src/jalview/ws/jws2/MsaWSThread.java +++ b/src/jalview/ws/jws2/MsaWSThread.java @@ -1,13 +1,13 @@ /* - * 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.8) + * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * + * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR @@ -20,8 +20,6 @@ package jalview.ws.jws2; import java.util.*; import compbio.data.msa.MsaWS; -import compbio.data.sequence.AlignmentMetadata; -import compbio.data.sequence.Program; import compbio.metadata.Argument; import compbio.metadata.ChunkHolder; import compbio.metadata.JobStatus; @@ -37,26 +35,6 @@ import jalview.ws.JobStateSummary; import jalview.ws.jws2.dm.JabaWsParamSet; import jalview.ws.params.WsParamSetI; -/** - *

- * Title: - *

- * - *

- * Description: - *

- * - *

- * Copyright: Copyright (c) 2004 - *

- * - *

- * Company: Dundee University - *

- * - * @author not attributable - * @version 1.0 - */ class MsaWSThread extends AWS2Thread implements WSClientI { boolean submitGaps = false; // pass sequences including gaps to alignment @@ -536,7 +514,7 @@ class MsaWSThread extends AWS2Thread implements WSClientI try { boolean cancelledJob = server.cancelJob(jobs[job].getJobId()); - if (cancelledJob || true) + if (true) // cancelledJob || true) { // CANCELLED_JOB // if the Jaba server indicates the job can't be cancelled, its @@ -606,7 +584,7 @@ class MsaWSThread extends AWS2Thread implements WSClientI { StringBuffer response = j.jobProgress; long lastchunk = j.getLastChunk(); - boolean changed=false; + boolean changed = false; do { j.setLastChunk(lastchunk); @@ -614,9 +592,16 @@ class MsaWSThread extends AWS2Thread implements WSClientI .pullExecStatistics(j.getJobId(), lastchunk); if (chunk != null) { - changed=chunk.getChunk().length()>0; + changed |= chunk.getChunk().length() > 0; response.append(chunk.getChunk()); lastchunk = chunk.getNextPosition(); + try + { + Thread.sleep(50); + } catch (InterruptedException x) + { + } + ; } ; } while (lastchunk >= 0 && j.getLastChunk() != lastchunk); @@ -660,7 +645,7 @@ class MsaWSThread extends AWS2Thread implements WSClientI } else if (j.hasArguments()) { - j.setJobId(server.customAlign(j.seqs,j.getJabaArguments())); + j.setJobId(server.customAlign(j.seqs, j.getJabaArguments())); } else { @@ -746,6 +731,8 @@ class MsaWSThread extends AWS2Thread implements WSClientI public void parseResult() { + long progbar = System.currentTimeMillis(); + wsInfo.setProgressBar("Collecting job results.", progbar); int results = 0; // number of result sets received JobStateSummary finalState = new JobStateSummary(); try @@ -755,40 +742,45 @@ class MsaWSThread extends AWS2Thread implements WSClientI MsaWSJob msjob = ((MsaWSJob) jobs[j]); if (jobs[j].isFinished() && msjob.alignment == null) { - boolean jpchanged=false,jpex=false; - do { + int nunchanged = 3, nexcept = 3; + boolean jpchanged = false, jpex = false; + do + { try { jpchanged = updateJobProgress(msjob); - jpex=false; + jpex = false; + if (jpchanged) + { + nexcept = 3; + } } 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; - } + nexcept--; + nunchanged = 3; // set flag remember that we've had an exception. - jpex=true; + jpex = true; + jpchanged = false; } - if (jpchanged) + if (!jpchanged) { try { - Thread.sleep(jpex ? 400 : 200); // wait a bit longer if we experienced an exception. + Thread.sleep(jpex ? 2400 : 1200); // wait a bit longer if we + // experienced an exception. } catch (Exception ex) { } ; + nunchanged--; } - } while (jpchanged); - + } while (nunchanged > 0 && nexcept > 0); + if (Cache.log.isDebugEnabled()) { System.out.println("Job Execution file for job: " @@ -807,6 +799,9 @@ class MsaWSThread extends AWS2Thread implements WSClientI Cache.log .debug("Results not available for finished job - marking as broken job.", e); + msjob.jobProgress + .append("\nResult not available. Probably due to invalid input or parameter settings. Server error message below:\n\n" + + e.getLocalizedMessage()); msjob.setjobStatus(JobStatus.FAILED); } catch (Exception e) { @@ -863,9 +858,10 @@ class MsaWSThread extends AWS2Thread implements WSClientI } else { - wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); wsInfo.setFinishedNoResults(); } + updateGlobalStatus(finalState); + wsInfo.setProgressBar(null, progbar); } void displayResults(boolean newFrame)