Merge branch 'asm_14.3.1' of /data/integration-asm-gerrit/update-latest/AWIPS2_baseline into master_14.3.1

Former-commit-id: 3919c9ec2f [formerly 36fa86071fa492bd1d135b3ded6cde54d0567474]
Former-commit-id: 61b206be0b
This commit is contained in:
Brian.Dyke 2014-06-04 07:46:16 -04:00
commit feb26ee9b7
15 changed files with 483 additions and 45 deletions

View file

@ -0,0 +1,30 @@
# radarWatchdog.txt
#
# Controls how long to wait for products specified on the RPS list before
# sounding an alarm. There are two sections: One defines VCP durations
# and one that lists products to monitor.
#
# VCP duration format: <VCP number>|<duration in seconds>
#
# Product format: <product mnemonic>
#
# <product mnemonic> is a mnemonic found in radarInfo.txt.
#
#
# If a product is listed, but is not actually in the current RPS list,
# it will not be monitored.
[VCP]
11 | 300
211 | 300
12 | 270
212 | 270
21 | 360
121 | 360
221 | 360
31 | 600
32 | 600
80 | 360
90 | 360
[Products]
V
Z

View file

@ -124,6 +124,7 @@ public class RadarServer implements RadarEventListener {
addListener(new DedicatedRadarActivator(this));
addListener(new RequestScheduler(this));
addListener(new RadarServerAvailable(this));
addListener(new RadarWatchdogListener(configuration));
}
public void addListener(RadarEventListener l) {

View file

@ -42,6 +42,7 @@ import com.raytheon.rcm.event.RadarEventAdapter;
* ------------ ---------- ----------- --------------------------
* Nov 9, 2011 mnash Initial creation
* 2012-07-27 DR 14896 D. Friedman Handle multiple RPGs.
* 2014-05-22 DR 16319 dhuffman Change some methods to static.
*
* </pre>
*
@ -86,7 +87,7 @@ public class RadarServerAvailable extends RadarEventAdapter {
}
}
private void sendNotification(final String radarId, final String message) {
public static void sendNotification(final String radarId, final String message) {
getExecutorService().submit(new Runnable() {
@Override
public void run() {
@ -95,7 +96,7 @@ public class RadarServerAvailable extends RadarEventAdapter {
});
}
private void sendNotification2(String radarId, String message) {
private static void sendNotification2(String radarId, String message) {
ProcessBuilder builder;
Process proc = null;

View file

@ -0,0 +1,259 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.rcm.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.raytheon.rcm.config.Configuration;
/**
*
* This class encapsulates the watchdog activity into a plugin for the
* RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- ---------- ----------- --------------------------
* May 12, 2014 DR 16319 dhuffman Initial creation.
*
* </pre>
*
* @author dhuffman
* @version 1.0
*/
public class RadarWatchdog extends Thread {
private static Object semifore = new Object();
protected static class GsmItem {
protected String radarID;
protected int vcp;
protected long time;
protected long alarmTime;
protected long nextAlarmTime;
protected GsmItem() {
}
}
protected static class RadarItem {
protected String radarID;
protected String mnemonic;
protected long time;
protected long messageTime;
protected RadarItem() {
}
}
private long startTime = 0;
private long shortestWait = 0;
private static final long fudgeTime = 30;
private static Map<String, GsmItem> mapGSM = new ConcurrentHashMap<String, GsmItem>();
private static Map<String, Map<String, RadarItem>> mapMnemonic = new ConcurrentHashMap<String, Map<String, RadarItem>>();
private static Map<Integer, Integer> mapDuration = new ConcurrentHashMap<Integer, Integer>();
private static List<String> mapMnemonicProducts = new ArrayList<String>();
protected Configuration configuration;
private static String configFileName = "radarWatchdog.txt";
protected RadarWatchdog(Configuration conf) {
setDaemon(true);
startTime = System.currentTimeMillis();
configuration = conf;
loadConfigFile(configFileName);
Iterator<String> mnem = mapMnemonicProducts.iterator();
while (mnem.hasNext()) {
String mn = mnem.next();
Map<String, RadarItem> mapRadar = new ConcurrentHashMap<String, RadarItem>();
mapMnemonic.put(mn, mapRadar);
}
}
public GsmItem getGSMItem(final String radarID) {
return mapGSM.get(radarID);
}
public void putGSMItem(GsmItem gi) {
if (gi != null) {
mapGSM.put(gi.radarID, gi);
}
}
public RadarItem getRadarItem(final String Mnemonic, final String radarID) {
Map<String, RadarItem> mapRadar = mapMnemonic.get(Mnemonic);
if (mapRadar != null)
return mapRadar.get(radarID);
return null;
}
public void putRadarItem(RadarItem ri) {
if (ri != null) {
Map<String, RadarItem> mapRadar = mapMnemonic.get(ri.mnemonic);
if (mapRadar != null) {
mapRadar.put(ri.radarID, ri);
}
}
}
@Override
public void run() {
long currentTime = 0;
shortestWait = 0;
while (true) {
try {
synchronized (semifore) {
semifore.wait(shortestWait < 800 ? 800 : shortestWait);
currentTime = System.currentTimeMillis();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
patrol(currentTime);
}
}
private void patrol(long currentTime) {
long duration = 0;
long adjustedTime = currentTime - fudgeTime;
shortestWait = 0;
Iterator<GsmItem> git = mapGSM.values().iterator();
while (git.hasNext()) {
GsmItem gi = git.next();
if (mapDuration.get(gi.vcp) != null) {
duration = mapDuration.get(gi.vcp) * 1000;
Iterator<String> mnem = mapMnemonicProducts.iterator();
while (mnem.hasNext()) {
String mn = mnem.next();
Map<String, RadarItem> mapRadar = mapMnemonic.get(mn);
if (mapRadar == null)
continue;
RadarItem ri = mapRadar.get(gi.radarID);
if (ri == null) {
if (duration + startTime < adjustedTime
&& gi.alarmTime != startTime) {
alert(duration, gi, mn);
gi.alarmTime = startTime;
gi.nextAlarmTime = startTime + duration;
}
if (shortestWait < 1 || duration < shortestWait)
shortestWait = duration;
}
if (ri != null) {
if (ri.time + duration < adjustedTime) {
if (ri.time <= gi.alarmTime
&& gi.nextAlarmTime < currentTime) {
alert(duration, gi, ri.mnemonic);
gi.alarmTime = ri.time;
gi.nextAlarmTime = currentTime + duration;
}
if (gi.nextAlarmTime < currentTime)
gi.alarmTime = ri.time;
}
if ((duration + ri.time) - adjustedTime < shortestWait
&& 1 <= (duration + ri.time) - adjustedTime)
shortestWait = (duration + ri.time) - adjustedTime;
if (shortestWait < 1)
shortestWait = duration;
}
}
}
}
}
private void alert(final long duration, final GsmItem gi, final String mn) {
String AlertVizMessage = "Watchdog: Radar ";
AlertVizMessage += gi.radarID + " has not produced a '" + mn
+ "' product in the last " + duration / 1000 + " seconds.";
RadarServerAvailable.sendNotification(gi.radarID, AlertVizMessage);
}
public void notifyWatchdog() {
synchronized (semifore) {
semifore.notify();
}
}
private boolean loadConfigFile(final String filename) {
try {
InputStream inFile = configuration.getDropInData(filename);
InputStreamReader reader = new InputStreamReader(inFile);
BufferedReader in = new BufferedReader(reader);
String line;
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
}
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
String s[] = line.split("\\|");
mapDuration.put(Integer.parseInt(s[0].trim()),
Integer.parseInt(s[1].trim()));
}
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
mapMnemonicProducts.add(line.trim());
}
} catch (IOException e) {
Log.errorf(": watchdog: Error while loading config file %s",
filename, e);
}
return true;
}
}

View file

@ -0,0 +1,139 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.rcm.server;
import java.util.HashMap;
import com.raytheon.rcm.config.Configuration;
import com.raytheon.rcm.event.RadarEvent;
import com.raytheon.rcm.event.RadarEventAdapter;
import com.raytheon.rcm.message.GSM;
import com.raytheon.rcm.message.GraphicProduct;
import com.raytheon.rcm.message.Message;
import com.raytheon.rcm.message.GraphicProduct.PDB;
import com.raytheon.rcm.products.ProductInfo;
import com.raytheon.rcm.products.RadarProduct;
import com.raytheon.rcm.server.RadarWatchdog;
/**
*
* This class listens to messages sent to the RadarServer, that the watchdog has
* an interest in.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- ---------- ----------- --------------------------
* May 12, 2014 DR 16319 dhuffman Initial creation.
*
* </pre>
*
* @author dhuffman
* @version 1.0
*/
public class RadarWatchdogListener extends RadarEventAdapter {
protected static RadarWatchdog radarWatchdog;
private static HashMap<String, String> mnemonicMap = new HashMap<String, String>();
{
mnemonicMap.put("HZ", "Z");
mnemonicMap.put("HV", "V");
mnemonicMap.put("HSW", "SW");
}
public RadarWatchdogListener(Configuration configuration) {
radarWatchdog = new RadarWatchdog(configuration);
radarWatchdog.start();
}
@Override
public void handleRadarEvent(RadarEvent event) {
if (event.getType() == RadarEvent.MESSAGE_RECEIVED) {
byte[] msg = event.getMessageData();
int messageCode = Message.messageCodeOf(msg);
if (messageCode == Message.GSM) {
GSM gsm = null;
try {
gsm = GSM.decode(msg);
} catch (Exception e) {
// This message error will be reported by EventLogger.
return;
}
if (gsm != null) {
RadarWatchdog.GsmItem gi = new RadarWatchdog.GsmItem();
gi.radarID = event.getRadarID();
gi.vcp = gsm.vcp;
gi.time = gsm.time.getTimeInMillis();
RadarWatchdog.GsmItem oldgi = radarWatchdog
.getGSMItem(gi.radarID);
if (oldgi == null
|| (oldgi != null && oldgi.time <= gi.time)) {
radarWatchdog.putGSMItem(gi);
}
}
} else if (16 <= messageCode) {
int mcode = 0;
PDB pdb = null;
RadarWatchdog.RadarItem ri = new RadarWatchdog.RadarItem();
mcode = Message.messageCodeOf(msg);
ri.messageTime = (Message.decodeHeader(msg).time)
.getTimeInMillis();
RadarProduct rp = ProductInfo.getInstance().getPoductForCode(
mcode);
if (rp == null)
return;
ri.mnemonic = rp.mnemonic;
String newMnemonic = mnemonicMap.get(ri.mnemonic);
if (newMnemonic != null)
ri.mnemonic = newMnemonic;
try {
pdb = GraphicProduct.pdbOfMessage(msg);
} catch (Exception e) {
// This message error will be reported by EventLogger.
return;
}
if (pdb != null) {
ri.radarID = event.getRadarID();
ri.time = System.currentTimeMillis();
RadarWatchdog.RadarItem oldri = radarWatchdog.getRadarItem(
ri.mnemonic, ri.radarID);
if (oldri == null
|| (oldri != null && oldri.messageTime <= ri.messageTime)) {
radarWatchdog.putRadarItem(ri);
radarWatchdog.notifyWatchdog();
}
}
}
}
}
}

View file

@ -170,6 +170,7 @@ import com.vividsolutions.jts.geom.Envelope;
* paint using the time in paintProps and
* remove dead code in paintInternal
* Apr 03, 2014 2737 randerso Uncommented out listers for iscParm inventory changed
* May 20, 2014 15814 zhao Make image display for model Parm not affected by ISC mode
*
* </pre>
*
@ -519,6 +520,8 @@ public class GFEResource extends
.getValidPeriod());
boolean iscParm = this.parm.isIscParm();
boolean modelParm = isModelParm();
if ((gd.length == 0) && !dataManager.getParmManager().iscMode()) {
return;
}
@ -605,7 +608,7 @@ public class GFEResource extends
VectorGridSlice vectorSlice = (VectorGridSlice) gs;
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
vectorSlice = new VectorGridSlice();
mask = dataManager.getIscDataAccess().getCompositeGrid(
new GridID(this.parm, this.curTime.getRefTime()),
@ -692,7 +695,7 @@ public class GFEResource extends
ScalarGridSlice scalarSlice = (ScalarGridSlice) gs;
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
scalarSlice = new ScalarGridSlice();
mask = dataManager.getIscDataAccess().getCompositeGrid(
new GridID(this.parm, this.curTime.getRefTime()),
@ -736,7 +739,7 @@ public class GFEResource extends
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
slice = new DiscreteGridSlice();
GridID gid = new GridID(parm, this.curTime.getRefTime());
mask = dataManager.getIscDataAccess().getCompositeGrid(gid,
@ -813,7 +816,7 @@ public class GFEResource extends
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
slice = new WeatherGridSlice();
GridID gid = new GridID(parm, this.curTime.getRefTime());
mask = dataManager.getIscDataAccess().getCompositeGrid(gid,
@ -1592,4 +1595,14 @@ public class GFEResource extends
}
}
private boolean isModelParm() {
String parmId = parm.getParmID().toString();
if ( parmId.contains("__Fcst_") ||
parmId.contains("__ISC_") ||
parmId.contains("__Official_") ||
parmId.contains("__Restore_")) {
return false;
}
return true;
}
}

View file

@ -11,7 +11,6 @@
##### Evan Bookbinder 05-05-2013 handleClosesPoints and 3rd bullet changes (OVER & now)
##### Evan Bookbinder 09-20-2013 Fixed rural area otherPoints in pathcast section, added rural phrase
##### Qinglu Lin 03-17-2014 DR 16309. Updated inserttorwatches and insertsvrwatches.
##### Qinglu Lin 05-13-2014 DR 17177. Updated secondBullet.
####################################################################################################
#*
Mile Marker Test Code
@ -203,7 +202,7 @@ ${dateUtil.period(${watches.getLatestTorTime()},${timeFormat.plain}, 15, ${local
#if(${secondtimezone})
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
#end
FOR##
FOR ##
#set($numPortions = ${list.size(${watch.getPortions()})})
#set($count = 0)
#foreach(${portion} in ${watch.getPortions()})
@ -237,7 +236,7 @@ ${dateUtil.period(${watches.getLatestSvrTime()},${timeFormat.plain}, 15, ${local
#if(${secondtimezone})
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
#end
FOR##
FOR ##
#set($numPortions = ${list.size(${watch.getPortions()})})
#set($count = 0)
#foreach(${portion} in ${watch.getPortions()})
@ -1143,13 +1142,10 @@ ${partOfArea}${area.name}...
######### MACRO TO GENERATE SECOND BULLET (UNTIL XXXX AMPM TZ (DAY) IN WARNINGS ##########
#macro(secondBullet $dateUtil $expire $timeFormat $localtimezone $secondtimezone $duration)
#if(${duration} >= 360)
#set($text = "UNTIL ${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${localtimezone})}")
UNTIL ${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${localtimezone})}##
#else
#set($text = "UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}")
UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}##
#end
#set($text = $text.replace("1200 PM", "NOON"))
#set($text = $text.replace("1200 AM", "MIDNIGHT"))
${text}##
#if(${secondtimezone})
#if(${duration} >= 360)
/${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${secondtimezone})}/##

View file

@ -381,9 +381,19 @@ DENSE FOG WAS REDUCING VISIBILITIES TO BELOW ${visibility}. REDUCE YOUR SPEED...
&&
#end
#############
## WATCHES ##
#############
#if(${list.contains($includedWatches, "torWatches")} && ${list.contains(${bullets}, "includeTorWatches")})
#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
#if(${list.contains(${includedWatches}, "svrWatches")} && ${list.contains(${bullets}, "includeSvrWatches")})
#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
####################################
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
####################################
#end
#printcoords(${areaPoly}, ${list})

View file

@ -124,6 +124,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="lightningCTA" bulletText="Intense lightning" parseString="INTENSE LIGHTNING IS OCCURRING WITH THIS STORM"/>
<bullet bulletName="reportCTA" bulletText="Report severe weather to coast guard" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD"/>
<bullet bulletName="fogCTA" bulletText="Dense fog" parseString="DENSE FOG WAS REDUCING VISIBILITIES TO"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
<bulletActionGroup action="COR" phen="MA" sig="S">
@ -164,6 +166,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="lightningCTA" bulletText="Intense lightning" parseString="INTENSE LIGHTNING IS OCCURRING WITH THIS STORM"/>
<bullet bulletName="reportCTA" bulletText="Report severe weather to coast guard" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD"/>
<bullet bulletName="fogCTA" bulletText="Dense fog" parseString="DENSE FOG WAS REDUCING VISIBILITIES TO"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
</bulletActionGroups>

View file

@ -109,6 +109,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="frontalPassage" bulletText="cold frontal passage"/>
<bullet bulletName="heavySnow" bulletText="heavy snow/low visibility"/>
<bullet bulletName="snowAmt" bulletText="snowfall amounts"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
<bulletActionGroup action="COR">
@ -144,6 +146,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="frontalPassage" bulletText="cold frontal passage"/>
<bullet bulletName="heavySnow" bulletText="heavy snow/low visibility"/>
<bullet bulletName="snowAmt" bulletText="snowfall amounts"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
</bulletActionGroups>

View file

@ -349,9 +349,10 @@ CONDITIONS CAN DETERIORATE RAPIDLY IN WINTER WEATHER SITUATIONS. BE PREPARED FOR
#############
## WATCHES ##
#############
#if(${list.contains($includedWatches, "includeSvrWatches")})
#if(${list.contains($includedWatches, "torWatches")} && ${list.contains(${bullets}, "includeTorWatches")})
#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
#if(${list.contains(${includedWatches}, "svrWatches")} && ${list.contains(${bullets}, "includeSvrWatches")})
#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
####################################

View file

@ -116,7 +116,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletGroup="toggle2" bulletDefault="true" parseString=""/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
<bullet bulletText="******** WINTER WX CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
<bullet bulletName="advisoryCTA" bulletText="Advisory may be required" bulletGroup="toggle3" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
<bullet bulletName="advisoryEffectCTA" bulletText="Advisory in effect" bulletGroup="toggle3" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>
@ -172,7 +173,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletGroup="toggle2" bulletDefault="true" parseString=""/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
<bullet bulletText="******** WINTER WX CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
<bullet bulletName="advisoryCTA" bulletText="Advisory may be required" bulletGroup="toggle3" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
<bullet bulletName="advisoryEffectCTA" bulletText="Advisory in effect" bulletGroup="toggle3" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>

View file

@ -118,28 +118,6 @@ function captureQpidStat() {
numQpidConnections=$( qpid-stat -c | wc -l )
(( numQpidConnections-=3 ))
echo -e "Total Number of QPID Connections: ${numQpidConnections}" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnMedAlarm )) && ${numQpidConnections} -lt $(( qpidConnLimit - qpidConnHighAlarm )) ]] ; then
echo -e "\tNOTE: Sending Warning ITO to NCF because number of connections is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm )) : Please check for deadlock condition" severity=Warning msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
elif [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnHighAlarm )) && ${numQpidConnections} -lt $(( qpidConnLimit - qpidConnCritAlarm )) ]] ; then
echo -e "\tNOTE: Sending Major ITO to NCF because number of connections is between $(( qpidConnLimit - qpidConnHighAlarm )) and $(( qpidConnLimit - qpidConnCritAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm )) : Please check for deadlock condition" severity=Major msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
elif [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnCritAlarm )) ]] ; then
echo -e "\tNOTE: Sending CRITIAL ITO to NCF because number of connections is >= $(( qpidConnLimit - qpidConnCritAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is >= $(( qpidConnLimit - qpidConnCritAlarm )) -- Take IMMEDIATE action to prevent system failure" severity=Critical msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
fi
echo >> ${logDirectory}/${nowTimeDate}-qpid-stat.out

View file

@ -61,7 +61,7 @@ listen_addresses = '*' # what IP address(es) to listen on;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 300 # (change requires restart)
max_connections = 400 # (change requires restart)
# Note: Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction).
#superuser_reserved_connections = 3 # (change requires restart)

View file

@ -24,12 +24,12 @@ BuildRequires: awips2-postgresql = 9.2.3-1.el6
BuildRequires: postgresql = 8.4.13-1.el6_3
BuildRequires: postgresql-devel = 8.4.13-1.el6_3
BuildRequires: postgresql-libs = 8.4.13-1.el6_3
BuildRequires: wxGTK = 2.8.12-1.el6.rf
BuildRequires: wxGTK-devel = 2.8.12-1.el6.rf
BuildRequires: wxGTK = 2.8.12-1
BuildRequires: wxGTK-devel = 2.8.12-1
provides: awips2-pgadmin3
requires: awips2-psql = 9.2.3-1
requires: wxGTK = 2.8.12-1.el6.rf
requires: wxGTK = 2.8.12-1
%description
AWIPS II pgadmin3 Distribution - A custom compilation of the pgadmin3 client compatible with