Merge "Omaha #4129 Log active table changes from ingestAT" into omaha_14.4.1

Former-commit-id: eaecbaa0b66153b43bfe59f96c43a1876b9e235f
This commit is contained in:
Ron Anderson 2015-03-04 16:06:41 -06:00 committed by Gerrit Code Review
commit e08d469768
5 changed files with 68 additions and 36 deletions

View file

@ -22,6 +22,30 @@
</encoder> </encoder>
</appender> </appender>
<!-- activeTableChange log -->
<!-- When migrating this change to 15.1.1 it will need to be split up properly.
See Roger Ferrel for instruction
-->
<appender name="activeTableChangeLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${edex.home}/logs/edex-${edex.run.mode}-activeTableChange-%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-5p %d [%t] %c{0}: %m%n</pattern>
</encoder>
</appender>
<appender name="activeTableChangeLogAsync" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="activeTableChangeLog" />
</appender>
<logger name="ActiveTableChange" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="activeTableChangeLogAsync" />
</logger>
<!-- ProductSrvRequest log --> <!-- ProductSrvRequest log -->
<appender name="ProductSrvRequestLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="ProductSrvRequestLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

View file

@ -196,7 +196,7 @@ def execIscDataRec(MSGID,SUBJECT,FILES):
elif SUBJECT == 'GET_ACTIVE_TABLE': elif SUBJECT == 'GET_ACTIVE_TABLE':
IrtServer.getVTECActiveTable(dataFile, None) IrtServer.getVTECActiveTable(dataFile, None)
elif SUBJECT == 'GET_ACTIVE_TABLE2': elif SUBJECT == 'GET_ACTIVE_TABLE2':
IrtServer.getVTECActiveTable(dateFile, xmlFileBuf) IrtServer.getVTECActiveTable(dataFile, xmlFileBuf)
elif SUBJECT in ['ISCGRIDS', 'ISCGRIDS2']: elif SUBJECT in ['ISCGRIDS', 'ISCGRIDS2']:
args = {"siteID": siteConfig.GFESUITE_SITEID, args = {"siteID": siteConfig.GFESUITE_SITEID,
"userID": 'SITE', "userID": 'SITE',

View file

@ -100,6 +100,7 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* Pass issuance site id to getActiveTable() * Pass issuance site id to getActiveTable()
* in updateActiveTable() so records will * in updateActiveTable() so records will
* be updated correctly. * be updated correctly.
* Mar 04, 2015 4129 randerso Pass active table change logger to ingestAt and/or MergeVTEC
* *
* </pre> * </pre>
* *
@ -300,7 +301,8 @@ public class ActiveTable {
.getHandler("ActiveTable"); .getHandler("ActiveTable");
ITimer timer = TimeUtil.getTimer(); ITimer timer = TimeUtil.getTimer();
timer.start(); timer.start();
List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId, mode); List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId,
mode);
timer.stop(); timer.stop();
perfStat.logDuration("getActiveTable", timer.getElapsedTime()); perfStat.logDuration("getActiveTable", timer.getElapsedTime());
@ -589,6 +591,7 @@ public class ActiveTable {
args.put("newRecords", newRecords); args.put("newRecords", newRecords);
args.put("drt", timeOffset); args.put("drt", timeOffset);
args.put("makeBackups", makeBackup); args.put("makeBackups", makeBackup);
args.put("atChangeLog", changeLog);
if (runIngestAT) { if (runIngestAT) {
args.put("xmlIncoming", xmlSource); args.put("xmlIncoming", xmlSource);
} }

View file

@ -35,8 +35,10 @@
# 01/24/14 #2504 randerso change to use iscUtil.getLogger for consistency # 01/24/14 #2504 randerso change to use iscUtil.getLogger for consistency
# 03/25/14 #2884 randerso Added xxxid to VTECChange # 03/25/14 #2884 randerso Added xxxid to VTECChange
# 05/15/14 #3157 dgilling Support multiple TPC and SPC sites. # 05/15/14 #3157 dgilling Support multiple TPC and SPC sites.
# 03/04/2015 #4129 randerso Log the active table changes at info level
# in the active table change log
# #
##
import copy import copy
import cPickle import cPickle
@ -64,7 +66,7 @@ from com.raytheon.uf.common.activetable import VTECPartners as JavaVTECPartners
class MergeVTEC(VTECTableUtil.VTECTableUtil): class MergeVTEC(VTECTableUtil.VTECTableUtil):
def __init__(self, activeTable, activeTableMode, newRecords, offsetSecs=0.0, def __init__(self, activeTable, activeTableMode, newRecords, offsetSecs=0.0,
makeBackups=True, logger=None): makeBackups=True, logger=None, atChangeLog=None):
# activeTable - current activeTable records # activeTable - current activeTable records
# activeTableMode - which table is being modified--OPERATIONAL or PRACTICE # activeTableMode - which table is being modified--OPERATIONAL or PRACTICE
# newRecords - records to merge in to activeTable # newRecords - records to merge in to activeTable
@ -125,7 +127,7 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
self._log.info("Other Table squeezed size: %d", len(otherTable)) self._log.info("Other Table squeezed size: %d", len(otherTable))
#merge the tables #merge the tables
updatedTable, toDelete, changes = self._mergeTable(activeTable, otherTable) updatedTable, toDelete, changes = self._mergeTable(activeTable, otherTable, atChangeLog)
self._log.info("Updated Active Table size: %d", len(updatedTable)) self._log.info("Updated Active Table size: %d", len(updatedTable))
updatedTable, tossRecordsMerged = vts.squeeze(updatedTable) updatedTable, tossRecordsMerged = vts.squeeze(updatedTable)
self._log.info("Updated Active Table squeeze size: %d", self._log.info("Updated Active Table squeeze size: %d",
@ -161,7 +163,7 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
# merges the active and other table together and returns the merged # merges the active and other table together and returns the merged
# table along with the list of changes that occurred. # table along with the list of changes that occurred.
def _mergeTable(self, activeTable, otherTable): def _mergeTable(self, activeTable, otherTable, atChangeLog):
changes = [] changes = []
purges = [] purges = []
compare = ['id', 'phen', 'sig', 'officeid', 'etn', 'pil'] compare = ['id', 'phen', 'sig', 'officeid', 'etn', 'pil']
@ -342,30 +344,31 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
changes.append(chgRec) changes.append(chgRec)
# log the changes # log the changes
if atChangeLog is not None:
if len(missingEntriesAct): if len(missingEntriesAct):
self._log.debug("Active Missing entries added: %s", atChangeLog.info("Active Missing entries added: " +
self.printActiveTable(missingEntriesAct, 1)) self.printActiveTable(missingEntriesAct, 1))
if len(newReplaceEntriesAct): if len(newReplaceEntriesAct):
self._log.debug("Active Replacement entries (new): %s", atChangeLog.info("Active Replacement entries (new): " +
self.printActiveTable(newReplaceEntriesAct, 1)) self.printActiveTable(newReplaceEntriesAct, 1))
if len(oldReplaceEntriesAct): if len(oldReplaceEntriesAct):
self._log.debug("Active Entries Replaced (old): %s", atChangeLog.info("Active Entries Replaced (old): " +
self.printActiveTable(oldReplaceEntriesAct, 1)) self.printActiveTable(oldReplaceEntriesAct, 1))
if len(missingEntriesPast): if len(missingEntriesPast):
self._log.debug("Past Missing entries added %s", atChangeLog.info("Past Missing entries added " +
self.printActiveTable(missingEntriesPast, 1)) self.printActiveTable(missingEntriesPast, 1))
if len(newReplaceEntriesPast): if len(newReplaceEntriesPast):
self._log.debug("Past Replacement entries (new): %s", atChangeLog.info("Past Replacement entries (new): " +
self.printActiveTable(newReplaceEntriesPast, 1)) self.printActiveTable(newReplaceEntriesPast, 1))
if len(oldReplaceEntriesPast): if len(oldReplaceEntriesPast):
self._log.debug("Past Entries Replaced (old): %s", atChangeLog.info("Past Entries Replaced (old): " +
self.printActiveTable(oldReplaceEntriesPast, 1)) self.printActiveTable(oldReplaceEntriesPast, 1))
if len(ignoredNewReplaceAct): if len(ignoredNewReplaceAct):
self._log.debug("Ignored Different Year Issuance (new): %s", atChangeLog.info("Ignored Different Year Issuance (new): " +
self.printActiveTable(ignoredNewReplaceAct, 1)) self.printActiveTable(ignoredNewReplaceAct, 1))
self._log.debug("Ignored Different Year Issuance (old): %s", atChangeLog.info("Ignored Different Year Issuance (old): " +
self.printActiveTable(ignoredOldReplaceAct, 1)) self.printActiveTable(ignoredOldReplaceAct, 1))
self._log.debug("Table Changes: %s", changes) atChangeLog.info("Table Changes: " + str(changes))
purges.extend(oldReplaceEntriesAct) purges.extend(oldReplaceEntriesAct)
purges.extend(oldReplaceEntriesPast) purges.extend(oldReplaceEntriesPast)
@ -411,7 +414,7 @@ class MergeVTEC(VTECTableUtil.VTECTableUtil):
return iscUtil.getLogger("MergeVTEC", logLevel=logging.INFO) return iscUtil.getLogger("MergeVTEC", logLevel=logging.INFO)
def merge(activeTable, activeTableMode, newRecords, drt=0.0, makeBackups=True, def merge(activeTable, activeTableMode, newRecords, drt=0.0, makeBackups=True,
logger=None): logger=None, atChangeLog=None):
pyActive = [] pyActive = []
for i in range(activeTable.size()): for i in range(activeTable.size()):
pyActive.append(ActiveTableRecord.ActiveTableRecord(activeTable.get(i))) pyActive.append(ActiveTableRecord.ActiveTableRecord(activeTable.get(i)))
@ -420,7 +423,7 @@ def merge(activeTable, activeTableMode, newRecords, drt=0.0, makeBackups=True,
for i in range(newRecords.size()): for i in range(newRecords.size()):
pyNew.append(ActiveTableRecord.ActiveTableRecord(newRecords.get(i))) pyNew.append(ActiveTableRecord.ActiveTableRecord(newRecords.get(i)))
decoder = MergeVTEC(pyActive, activeTableMode, pyNew, drt, makeBackups, logger) decoder = MergeVTEC(pyActive, activeTableMode, pyNew, drt, makeBackups, logger, atChangeLog)
mergeResults = decoder.getMergeResults() mergeResults = decoder.getMergeResults()
decoder = None decoder = None

View file

@ -28,7 +28,9 @@
# ------------ ---------- ----------- -------------------------- # ------------ ---------- ----------- --------------------------
# 02/13/13 1447 dgilling Initial Creation. # 02/13/13 1447 dgilling Initial Creation.
# 01/24/14 2504 randerso change to use iscUtil.getLogger for consistency # 01/24/14 2504 randerso change to use iscUtil.getLogger for consistency
# 03/04/2015 4129 randerso Pass active table change logger through to MergeVtec.merge
# #
##
import os import os
@ -48,7 +50,7 @@ def init_logging():
logger = iscUtil.getLogger("ingestAT", logLevel=logging.INFO) logger = iscUtil.getLogger("ingestAT", logLevel=logging.INFO)
def execute_ingest_at(incomingRecords, activeTable, atName, ztime, makeBackups, xmlIncoming): def execute_ingest_at(incomingRecords, activeTable, atName, ztime, makeBackups, xmlIncoming, atChangeLog):
# log the source of this data # log the source of this data
if xmlIncoming is not None: if xmlIncoming is not None:
irt = IrtAccess.IrtAccess("") irt = IrtAccess.IrtAccess("")
@ -63,20 +65,20 @@ def execute_ingest_at(incomingRecords, activeTable, atName, ztime, makeBackups,
results = None results = None
try: try:
results = MergeVTEC.merge(activeTable, atName, incomingRecords, ztime, makeBackups, results = MergeVTEC.merge(activeTable, atName, incomingRecords, ztime, makeBackups,
logger) logger, atChangeLog)
except: except:
logger.exception("MergeVTEC fail:") logger.exception("MergeVTEC fail:")
return results return results
def runFromJava(activeTable, activeTableMode, newRecords, drt, makeBackups, def runFromJava(activeTable, activeTableMode, newRecords, drt, makeBackups,
xmlIncoming): xmlIncoming, atChangeLog=None):
init_logging() init_logging()
logger.info('************* ingestAT ************************') logger.info('************* ingestAT ************************')
startT = time.time() startT = time.time()
results = execute_ingest_at(newRecords, activeTable, activeTableMode, drt, results = execute_ingest_at(newRecords, activeTable, activeTableMode, drt,
makeBackups, xmlIncoming) makeBackups, xmlIncoming, atChangeLog=atChangeLog)
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# Finish # Finish