From 1dc30083cae0f350d6d5a4657ffa949eb9986e85 Mon Sep 17 00:00:00 2001 From: Ben Steffensmeier Date: Tue, 7 Aug 2012 12:03:13 -0500 Subject: [PATCH] Issue #1004 make dispose/shutdown of plot jobs more permenant by joining. Former-commit-id: 0a974b26c267a09af085bc619a71e85c012da524 [formerly c9774a4f036def1982f055bf8ea8bec173e74ba7] [formerly 0a974b26c267a09af085bc619a71e85c012da524 [formerly c9774a4f036def1982f055bf8ea8bec173e74ba7] [formerly 83d6cde36896746ec81e507701a83286d73d1529 [formerly 4c5e5e0d54c523723edd16b756dc1caf208f5cd6]]] Former-commit-id: 83d6cde36896746ec81e507701a83286d73d1529 Former-commit-id: f47d533ac31dcef66ef2c9fbee945b769356bb5a [formerly ea704886643245e2800f7da6ecf4725488203e64] Former-commit-id: d645fc787e6afac59358e368e6ecacb60a3a571d --- .../com/raytheon/viz/pointdata/PlotDataThreadPool.java | 5 ++++- .../viz/pointdata/PlotModelDataRequestJob.java | 9 ++++++++- .../raytheon/viz/pointdata/PlotModelGeneratorJob.java | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) 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(); } }