diff --git a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotImageCreator.java b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotImageCreator.java index 59acefe95c..a0de2a7525 100644 --- a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotImageCreator.java +++ b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotImageCreator.java @@ -71,6 +71,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * 05/20/2013 988 Archana.S Initial creation. + * 02/26/2014 1061 B. Hebbard Relax tolerance for extent/zoom compare to avoid infinite loop. */ public class NcPlotImageCreator { @@ -219,9 +220,11 @@ public class NcPlotImageCreator { private RGB defaultColor; - private static double TOLERANCE = 0.000000000000000000000001; + private static double TOLERANCE = 1E-04; // 1E-24; // + // 0.000000000000000000000001; - private static double ZOOM_TOLERANCE = 0.0000000000000000000001; + private static double ZOOM_TOLERANCE = 1E-04; // 1E-22; // + // 0.0000000000000000000001; private static Amount WIND_SPD_3KNOTS = new Amount(3, NonSI.KNOT); diff --git a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotModelHdf5DataRequestor.java b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotModelHdf5DataRequestor.java index c6619a5d93..5a80e78f63 100644 --- a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotModelHdf5DataRequestor.java +++ b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/plotModels/NcPlotModelHdf5DataRequestor.java @@ -52,6 +52,19 @@ import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.jobs.JobPool; import com.raytheon.viz.pointdata.PointDataRequest; +/** + * + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#     Engineer       Description
+ * ------------ ---------- ----------- --------------------------
+ * 05/20/2013??   988        Archana.S    Initial creation.
+ * 02/26/2014    1061        B. Hebbard   Don't block on JobPool cancel, so CAVE doesn't freeze if resource unloaded during long retrieval
+ */
+
 public class NcPlotModelHdf5DataRequestor {
     StringBuffer sb = new StringBuffer();
 
@@ -136,6 +149,10 @@ public class NcPlotModelHdf5DataRequestor {
 
     Map condFilterMap = null;
 
+    // Indicates the dataRequestJobPool is being cancelled, so jobs
+    // should just exit gracefully on return from a long HDF5 request.
+    private boolean canceling = false;
+
     // Map< AbstractMetParameter, RequestConstraint >
     // condMetParamReqConstraintMap = null;
     public void queueStationsForHdf5Query(DataTime dt,
@@ -183,7 +200,8 @@ public class NcPlotModelHdf5DataRequestor {
         allMetParamsMap = new HashMap();
         plotPrmDefns = PlotParameterDefnsMngr.getInstance().getPlotParamDefns(
                 plotModel.getPlugin());
-        dataRequestJobPool = new JobPool("Requesting HDF5 data...", 8, false);
+        dataRequestJobPool = new JobPool("Requesting met param data...", 8,
+                false);
         queueOfStations = new ConcurrentLinkedQueue();
         parameters = new String[0];
         metParamNameToDbNameMap = new HashMap();
@@ -700,8 +718,10 @@ public class NcPlotModelHdf5DataRequestor {
     public void dispose() {
         Tracer.print("> Entry");
         Tracer.print("Invoking NcPlotModelHdf5DataRequestor.dispose()");
+        canceling = true;
         if (dataRequestJobPool != null) {
-            dataRequestJobPool.cancel();
+            dataRequestJobPool.cancel(false); // false = don't wait for jobs to
+                                              // complete
             dataRequestJobPool = null;
         }
         imageCreator.dispose();
@@ -1229,6 +1249,7 @@ public class NcPlotModelHdf5DataRequestor {
     private Collection requestSurfaceData(DataTime time,
             List listOfStationsRequestingForData) {
         Tracer.print("> Entry  " + Tracer.shortTimeString(time));
+
         // sem1.acquireUninterruptibly();
         Map stationMap = new HashMap(
                 listOfStationsRequestingForData.size());
@@ -1467,6 +1488,7 @@ public class NcPlotModelHdf5DataRequestor {
                                                 .shortTimeString(time)
                                                 + " "
                                                 + Tracer.shortTimeString(dataTime)
+                                                + " "
                                                 + currentStation.info.stationId
                                                 + " "
                                                 + " from pkeySet updating prmToPlot(Key) "
@@ -1479,6 +1501,7 @@ public class NcPlotModelHdf5DataRequestor {
                                                     .shortTimeString(time)
                                                     + " "
                                                     + Tracer.shortTimeString(dataTime)
+                                                    + " "
                                                     + currentStation.info.stationId
                                                     + " "
                                                     + " prmToPlot non-null "
@@ -1492,6 +1515,7 @@ public class NcPlotModelHdf5DataRequestor {
                                                     .shortTimeString(time)
                                                     + " "
                                                     + Tracer.shortTimeString(dataTime)
+                                                    + " "
                                                     + currentStation.info.stationId
                                                     + " "
                                                     + " from pkeySet updating prmToPlot(Key) "
@@ -1523,6 +1547,7 @@ public class NcPlotModelHdf5DataRequestor {
                                     Tracer.print(Tracer.shortTimeString(time)
                                             + " "
                                             + Tracer.shortTimeString(dataTime)
+                                            + " "
                                             + currentStation.info.stationId
                                             + " "
                                             + " NULL metPrm return from dbParamsMap for key -- skipping"
@@ -1572,9 +1597,9 @@ public class NcPlotModelHdf5DataRequestor {
                             if (jfk)
                                 Tracer.print(Tracer.shortTimeString(time) + " "
                                         + Tracer.shortTimeString(dataTime)
-                                        + currentStation.info.stationId + " "
-                                        + " before setMetParamFromPDV " + dbPrm
-                                        + " " + metPrm);
+                                        + " " + currentStation.info.stationId
+                                        + " " + " before setMetParamFromPDV "
+                                        + dbPrm + " " + metPrm);
 
                             /*
                              * Set the value for Met parameters from the
@@ -1584,9 +1609,9 @@ public class NcPlotModelHdf5DataRequestor {
                             if (jfk)
                                 Tracer.print(Tracer.shortTimeString(time) + " "
                                         + Tracer.shortTimeString(dataTime)
-                                        + currentStation.info.stationId + " "
-                                        + " after setMetParamFromPDV " + dbPrm
-                                        + " " + metPrm);
+                                        + " " + currentStation.info.stationId
+                                        + " " + " after setMetParamFromPDV "
+                                        + dbPrm + " " + metPrm);
 
                             // if(
                             // metPrm.getMetParamName().compareTo("StationID")
@@ -1617,9 +1642,9 @@ public class NcPlotModelHdf5DataRequestor {
                             if (jfk)
                                 Tracer.print(Tracer.shortTimeString(time) + " "
                                         + Tracer.shortTimeString(dataTime)
-                                        + currentStation.info.stationId + " "
-                                        + " after put " + dbPrm + " " + metPrm
-                                        + " into dbParamsMap");
+                                        + " " + currentStation.info.stationId
+                                        + " " + " after put " + dbPrm + " "
+                                        + metPrm + " into dbParamsMap");
 
                             if (condFilterMap != null
                                     && !condFilterMap.isEmpty()) {
@@ -1734,6 +1759,7 @@ public class NcPlotModelHdf5DataRequestor {
                                     Tracer.print(Tracer.shortTimeString(time)
                                             + " "
                                             + Tracer.shortTimeString(dataTime)
+                                            + " "
                                             + currentStation.info.stationId
                                             + " " + " trying to add metParam "
                                             + metParam);
@@ -1744,6 +1770,7 @@ public class NcPlotModelHdf5DataRequestor {
                                                 .shortTimeString(time)
                                                 + " "
                                                 + Tracer.shortTimeString(dataTime)
+                                                + " "
                                                 + currentStation.info.stationId
                                                 + " "
                                                 + " newPrm NULL from newInstance -- skipping!!! "
@@ -1755,6 +1782,7 @@ public class NcPlotModelHdf5DataRequestor {
                                     Tracer.print(Tracer.shortTimeString(time)
                                             + " "
                                             + Tracer.shortTimeString(dataTime)
+                                            + " "
                                             + currentStation.info.stationId
                                             + " " + " added newPrm " + newPrm);
                             }
@@ -2061,9 +2089,14 @@ public class NcPlotModelHdf5DataRequestor {
 
             Tracer.sanityCheckStationSet(stationsWithData);
 
-            if (stationsWithData.size() > 0)
+            if (canceling) {
+                Tracer.print("CANCEL in progress; no plot creation will occur for frame "
+                        + Tracer.shortTimeString(time));
+
+            } else if (stationsWithData.size() > 0) {
                 imageCreator.queueStationsToCreateImages(time,
                         stationsWithData, plotDensity);
+            }
 
             Tracer.print("< Exit   END TASK   " + Tracer.shortTimeString(time));
 
diff --git a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/progdisc/ProgressiveDisclosure.java b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/progdisc/ProgressiveDisclosure.java
index 61c5aeb043..55b97bd16d 100644
--- a/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/progdisc/ProgressiveDisclosure.java
+++ b/ncep/gov.noaa.nws.ncep.viz.rsc.plotdata/src/gov/noaa/nws/ncep/viz/rsc/plotdata/progdisc/ProgressiveDisclosure.java
@@ -32,9 +32,25 @@ import com.vividsolutions.jts.geom.Coordinate;
 
 //import org.hibernate.mapping.Array;
 
+/**
+ * 
+ * 
+ * 
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#     Engineer       Description
+ * ------------ ---------- ----------- --------------------------
+ * 05/20/2013     988        Archana.S    Initial creation.
+ * 02/26/2014    1061        B. Hebbard   Relax tolerance for extent/zoom compare to avoid infinite loop.
+ */
+
 public final class ProgressiveDisclosure {
 
-    private final static double TOLERANCE = 0.0000000001;// 0.00000001;//0.000000000001;
+    private final static double TOLERANCE = 1E-03; // 0.0000000001;//
+                                                   // 0.00000001;//0.000000000001;
+
+    private final static double ZOOM_TOLERANCE = TOLERANCE; // need different?
 
     private ConcurrentLinkedQueue queueOfStationsToBeDisclosed;
 
@@ -308,7 +324,7 @@ public final class ProgressiveDisclosure {
             }
         }
 
-        if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > 0.00000000000001) {
+        if (Math.abs(progDiscTask.zoomLevel - activePane.getZoomLevel()) > ZOOM_TOLERANCE) {
             progDiscTask.zoomLevel = activePane.getZoomLevel();
             progDiscTask.extent = currViewExtents.clone();
             Tracer.print("Changed zoom level");