From 26437e1d6ed3a51ef485fdce2b9f55019ba6ef9b Mon Sep 17 00:00:00 2001 From: Roger Ferrel Date: Mon, 25 Mar 2013 15:38:56 -0500 Subject: [PATCH] Issue #1735 Performance improvments for LLWSData. Change-Id: I146250873a90e1a7378a3e910416e03b6d3bf17f Former-commit-id: ff309e842a995badf474524e56bc7e250e335f65 [formerly b5fc495b61bb237dc214373eddd0e380505d2f62] [formerly feadd01ad958123866f221df2ae410a73d568be7] [formerly ff309e842a995badf474524e56bc7e250e335f65 [formerly b5fc495b61bb237dc214373eddd0e380505d2f62] [formerly feadd01ad958123866f221df2ae410a73d568be7] [formerly 549650c05cb6bf284205e9f39565727cc95a3d95 [formerly feadd01ad958123866f221df2ae410a73d568be7 [formerly 0c067f6bd45f0474708af1715278d21a2a963868]]]] Former-commit-id: 549650c05cb6bf284205e9f39565727cc95a3d95 Former-commit-id: a1401de5a9513ae3fa3e47c5708442976110399c [formerly 912e5020d7168e534100e20e11503c761aa1f7e2] [formerly 1eb48b052fbe2c4118f498252212ce0bac7c0543 [formerly daecc7b7f4b337f734a1ff6a033f5dcb63b6adec]] Former-commit-id: b1fdc98ea1ebe53410c76cb7a270821ef6a31c4f [formerly 7259166afeaee35aed077582bd05fdde080fd8e1] Former-commit-id: b27d35b29ccd4a4b138e1a5ba896813480220029 --- .../cave/etc/aviation/python/GridData.py | 8 ++++- .../cave/etc/aviation/python/GridMonitor.py | 2 +- .../cave/etc/aviation/python/LLWSData.py | 27 ++++++++++---- .../cave/etc/aviation/python/LLWSThread.py | 36 ++++++++++++------- .../viz/aviation/monitor/TafSiteComp.java | 2 +- 5 files changed, 53 insertions(+), 22 deletions(-) diff --git a/cave/build/static/common/cave/etc/aviation/python/GridData.py b/cave/build/static/common/cave/etc/aviation/python/GridData.py index 7b8c538680..0480d8dded 100644 --- a/cave/build/static/common/cave/etc/aviation/python/GridData.py +++ b/cave/build/static/common/cave/etc/aviation/python/GridData.py @@ -538,8 +538,14 @@ def _retrieveMapData(siteIDs, timeSeconds, parameters=Parameters): for p in parameters: task.addParameter(p) pdcs = GuidanceUtil.getGFEPointsData(task) - i = 0 results = {} + if pdcs is None : + for siteId in siteIDs: + _Logger.info('Data not available for %s', siteID) + results[siteID] = None + return results + + i = 0 for siteID in siteIDs: pdc = pdcs.getContainer(i) if i < pdcs.getSize() : diff --git a/cave/build/static/common/cave/etc/aviation/python/GridMonitor.py b/cave/build/static/common/cave/etc/aviation/python/GridMonitor.py index a8249b1a68..b519b28320 100644 --- a/cave/build/static/common/cave/etc/aviation/python/GridMonitor.py +++ b/cave/build/static/common/cave/etc/aviation/python/GridMonitor.py @@ -133,7 +133,7 @@ #* Date Ticket# Engineer Description #* ------------ ---------- ----------- -------------------------- #* Initial creation. -#* Mar 07, 2013 1735 rferrel Use SiteGridManger to limit calls to server. +#* Mar 07, 2013 1735 rferrel Use SiteGridManager to limit calls to server. ## import logging, time, cPickle diff --git a/cave/build/static/common/cave/etc/aviation/python/LLWSData.py b/cave/build/static/common/cave/etc/aviation/python/LLWSData.py index 0372a66d60..fcc5e43533 100644 --- a/cave/build/static/common/cave/etc/aviation/python/LLWSData.py +++ b/cave/build/static/common/cave/etc/aviation/python/LLWSData.py @@ -48,6 +48,16 @@ # Title: AvnFPS: Incorrect file permission on ISH files # # +#** +#* +#* +#*
+#* SOFTWARE HISTORY
+#* Date         Ticket#     Engineer    Description
+#* ------------ ----------  ----------- --------------------------
+#*                                      Initial creation.
+#* Mar 25, 2013 1735        rferrel     Retrieve only the last 24 hours of acars records.
+##  
 
 from com.raytheon.viz.aviation.monitor import LlwsManager
 import logging, os, time
@@ -96,12 +106,17 @@ def retrieve(siteID, info):
     profilerIds = th.processProfilerData(siteID)
     for profilerId in profilerIds:
         try :
-	    shear = th.genShear(siteID, profilerId)
-	    d[profilerId] = shear
-    	except LLWSThread.InValid:
-    	    pass
+            shear = th.genShear(siteID, profilerId)
+            d[profilerId] = shear
+        except LLWSThread.InValid:
+            pass
     
-    acarsRec = LlwsManager.getAcarsRecord(siteID, 0)
+    # This gets all acarsRec in the database since 0 retrieves from the epoch.
+    # This may be ok if database is purged frequently.
+    # How far back should it go 1, 6, 12, 24 hours?
+    #    acarsRec = LlwsManager.getAcarsRecord(siteID, 0)
+    refTime = long((time.time() - (24.0*3600.0)) * 1000.0)
+    acarsRec = LlwsManager.getAcarsRecord(siteID, refTime)
     if acarsRec:
         acarsId = siteID[1:]
         th.processAcarsData(acarsId,acarsRec)
@@ -111,7 +126,7 @@ def retrieve(siteID, info):
         except LLWSThread.InValid:
             pass
     else:
-		_Logger.info('Missing ACARS Sounding data for %s.', siteID)
+        _Logger.info('Missing ACARS Sounding data for %s.', siteID)
     radars = info['sites']['radars']
     for radar in radars:
         vwp = LlwsManager.getVerticalWindProfile(radar, 0)
diff --git a/cave/build/static/common/cave/etc/aviation/python/LLWSThread.py b/cave/build/static/common/cave/etc/aviation/python/LLWSThread.py
index 6bb755b890..11cba9dc83 100644
--- a/cave/build/static/common/cave/etc/aviation/python/LLWSThread.py
+++ b/cave/build/static/common/cave/etc/aviation/python/LLWSThread.py
@@ -159,6 +159,17 @@
 #       	Status:           CLOSED
 #       	Title:             AvnFPS:  AvnFPS regression based lightning forecast to use LAMP
 #       
+#**
+#* 
+#* 
+#* 
+#* SOFTWARE HISTORY
+#* Date         Ticket#     Engineer    Description
+#* ------------ ----------  ----------- --------------------------
+#*                                      Initial creation.
+#* Mar 25, 2013 1735        rferrel     __initializeLLWSDictsLists now reads cfg data only for 
+#*                                      desired site instead of all sites. So it is O(n) instead of O(n**2)
+##  
 #
 import logging, os, Queue, re, time, math, sys
 import Avn, AvnParser, LLWSData, MetarData
@@ -184,7 +195,6 @@ class Server(object):
    __TimeOut = 10.0
 
    def __init__(self, info):     
-      #self.name = info['name']
       self.profilerList = []
       self.radarList = []
       self.metarList = []
@@ -207,7 +217,8 @@ class Server(object):
       rList = []
       aList = []
 
-      for m in AvnParser.getTafHeaders():
+      m = info['ident']
+      if m is not None:
          siteDict = AvnParser.getTafSiteCfg(m)
          try:
             radars = siteDict['sites']['radars']
@@ -226,17 +237,16 @@ class Server(object):
          except KeyError:
             acars = []
 
-         if profilers == [] and radars == [] and acars == []:
-            continue
-         #
-         # This TAF site needs to be monitored
-         self.metarList.append(m)
-         self.siteVWPsDict[m] = [radars,profilers,radar_cutoff,profiler_cutoff]
-         self.acarsDict[m] = [acars]
-         #
-         pList.extend(profilers)
-         rList.extend(radars)
-         aList.extend(acars)
+         if len(profilers) > 0 or len(radars) > 0 or len(acars) > 0 :
+             #
+             # This TAF site needs to be monitored
+             self.metarList.append(m)
+             self.siteVWPsDict[m] = [radars,profilers,radar_cutoff,profiler_cutoff]
+             self.acarsDict[m] = [acars]
+             #
+             pList.extend(profilers)
+             rList.extend(radars)
+             aList.extend(acars)
       #
       # Find all unique radars and profilers to monitor
       self.profilerList = dict.fromkeys(pList).keys()
diff --git a/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/monitor/TafSiteComp.java b/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/monitor/TafSiteComp.java
index 58504dbd38..d55c329f7d 100644
--- a/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/monitor/TafSiteComp.java
+++ b/cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/monitor/TafSiteComp.java
@@ -101,7 +101,7 @@ import com.raytheon.viz.avnconfig.IStatusSettable;
  */
 public class TafSiteComp {
     /**
-     * 
+     * Grid monitor class name.
      */
     public static final String GRID_MONITOR_CLASS = "GridMonitor";