diff --git a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotDataThreadPool.java b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotDataThreadPool.java index 9f168754b2..42404ff691 100644 --- a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotDataThreadPool.java +++ b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotDataThreadPool.java @@ -184,8 +184,11 @@ public class PlotDataThreadPool { } public void shutdown() { + List jobListCopy = new ArrayList( + jobList); + jobList.clear(); stationQueue.clear(); - for (PlotModelDataRequestJob job : jobList) { + for (PlotModelDataRequestJob job : jobListCopy) { job.shutdown(); } } diff --git a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelDataRequestJob.java b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelDataRequestJob.java index 6faa1d0d73..c2311a4884 100644 --- a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelDataRequestJob.java +++ b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelDataRequestJob.java @@ -145,6 +145,9 @@ public class PlotModelDataRequestJob extends Job { // TODO need to determine if this type of plot is a combination or // not combineData(stationQuery); + if (monitor.isCanceled()) { + break; + } for (PlotInfo[] infos : stationQuery) { // schedule next work for other jobs @@ -341,8 +344,12 @@ public class PlotModelDataRequestJob extends Job { public void shutdown() { this.cancel(); + try { + join(); + } catch (InterruptedException e) { + statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); + } this.generatorJob.shutdown(); - this.generatorJob.clearImageCache(); } } diff --git a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelGeneratorJob.java b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelGeneratorJob.java index 1790d6f791..8402b8440a 100644 --- a/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelGeneratorJob.java +++ b/cave/com.raytheon.viz.pointdata/src/com/raytheon/viz/pointdata/PlotModelGeneratorJob.java @@ -32,6 +32,7 @@ import org.eclipse.core.runtime.jobs.Job; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.IGraphicsTarget; import com.raytheon.uf.viz.core.data.IRenderedImageCallback; import com.raytheon.uf.viz.core.drawables.IImage; @@ -118,6 +119,9 @@ public class PlotModelGeneratorJob extends Job { } } } + if (monitor.isCanceled()) { + break; + } caller.modelGenerated(infos, image); } catch (Exception e) { statusHandler.error("Error creating plot", e); @@ -152,5 +156,11 @@ public class PlotModelGeneratorJob extends Job { protected void shutdown() { cancel(); taskQueue.clear(); + try { + join(); + } catch (InterruptedException e) { + statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); + } + clearImageCache(); } }