Issue #2737 Make iscMosaic remove data from ISC when grids are deleted.

Change-Id: Ibf1255244b6e5856b5052e541727d427b331d9fe

Former-commit-id: ea250a253f [formerly 01ab6ce52d [formerly 5db8738783d79e8a48bfffac49910cc46df61ad2]]
Former-commit-id: 01ab6ce52d
Former-commit-id: 51bb7f474d
This commit is contained in:
Ron Anderson 2014-04-03 15:42:12 -05:00
parent 660bc974e9
commit 700d2ba37f
7 changed files with 75 additions and 65 deletions

View file

@ -118,6 +118,7 @@ import com.raytheon.viz.gfe.core.parm.Parm;
* 06/06/13 #2073 dgilling Make getGridInventory() better match A1, * 06/06/13 #2073 dgilling Make getGridInventory() better match A1,
* fix warnings. * fix warnings.
* 11/20/2013 #2331 randerso Added getTopoData method * 11/20/2013 #2331 randerso Added getTopoData method
* 04/03/2014 #2737 randerso Moved clientISCSendStatus to SaveGFEGridRequest
* *
* </pre> * </pre>
* *
@ -421,8 +422,8 @@ public class IFPClient {
throws GFEServerException { throws GFEServerException {
ServerResponse<?> response = null; ServerResponse<?> response = null;
if (!requests.isEmpty()) { if (!requests.isEmpty()) {
SaveGfeGridRequest request = new SaveGfeGridRequest(); SaveGfeGridRequest request = new SaveGfeGridRequest(
request.setSaveRequest(requests); dataManager.clientISCSendStatus(), requests);
response = makeRequest(request); response = makeRequest(request);
} }
logResponse(response); logResponse(response);

View file

@ -84,6 +84,7 @@ import com.raytheon.viz.gfe.core.griddata.IGridData;
* logging for save performance * logging for save performance
* 04/23/13 #1949 rjpeter Added logging of number of records. * 04/23/13 #1949 rjpeter Added logging of number of records.
* 06/26/13 #2044 randerso Fixed error message priority * 06/26/13 #2044 randerso Fixed error message priority
* 04/03/2014 #2737 randerso Moved clientSendStatus from SaveGridRequest to SaveGFEGridRequest
* </pre> * </pre>
* *
* @author chammack * @author chammack
@ -618,8 +619,7 @@ public class DbParm extends Parm {
if (size > GfeClientConfig.getInstance().getGridSaveThreshold()) { if (size > GfeClientConfig.getInstance().getGridSaveThreshold()) {
TimeRange tr = new TimeRange(saveTime.getStart(), data TimeRange tr = new TimeRange(saveTime.getStart(), data
.getGridTime().getEnd()); .getGridTime().getEnd());
sgr.add(new SaveGridRequest(getParmID(), tr, records, sgr.add(new SaveGridRequest(getParmID(), tr, records));
dataManager.clientISCSendStatus()));
// save this batch of grids // save this batch of grids
if (doSave(sgr)) { if (doSave(sgr)) {
@ -647,8 +647,7 @@ public class DbParm extends Parm {
// if any grids or any time not saved // if any grids or any time not saved
if ((size > 0) || (saveTime.getDuration() > 0)) { if ((size > 0) || (saveTime.getDuration() > 0)) {
sgr.add(new SaveGridRequest(getParmID(), saveTime, records, sgr.add(new SaveGridRequest(getParmID(), saveTime, records));
dataManager.clientISCSendStatus()));
recordCount = records.size(); recordCount = records.size();
} }

View file

@ -169,6 +169,7 @@ import com.vividsolutions.jts.geom.Envelope;
* Jan 23, 2014 2703 bsteffen Allow construction using a resourceData, * Jan 23, 2014 2703 bsteffen Allow construction using a resourceData,
* paint using the time in paintProps and * paint using the time in paintProps and
* remove dead code in paintInternal * remove dead code in paintInternal
* Apr 03, 2014 2737 randerso Uncommented out listers for iscParm inventory changed
* *
* </pre> * </pre>
* *
@ -322,8 +323,7 @@ public class GFEResource extends
* the datamanager responsible for it * the datamanager responsible for it
*/ */
public GFEResource(GFEResourceData resourceData, LoadProperties loadProps, public GFEResource(GFEResourceData resourceData, LoadProperties loadProps,
Parm parm, Parm parm, DataManager dataManager) {
DataManager dataManager) {
super(resourceData, loadProps); super(resourceData, loadProps);
this.resourceData.addChangeListener(this); this.resourceData.addChangeListener(this);
this.parm = parm; this.parm = parm;
@ -1580,12 +1580,12 @@ public class GFEResource extends
.getISCParm(this.parm); .getISCParm(this.parm);
if (iscParm != null) { if (iscParm != null) {
if (message.show()) { if (message.show()) {
// iscParm.getListeners().addParmInventoryChangedListener( iscParm.getListeners().addParmInventoryChangedListener(
// this.parmInventoryChanged); this.parmInventoryChanged);
iscParm.getListeners().addGridChangedListener(this.gridChanged); iscParm.getListeners().addGridChangedListener(this.gridChanged);
} else { } else {
// iscParm.getListeners().removeParmInventoryChangedListener( iscParm.getListeners().removeParmInventoryChangedListener(
// this.parmInventoryChanged); this.parmInventoryChanged);
iscParm.getListeners().removeGridChangedListener( iscParm.getListeners().removeGridChangedListener(
this.gridChanged); this.gridChanged);
} }

View file

@ -52,9 +52,11 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* 06/30/08 #875 bphillip Initial Creation * 06/30/08 #875 bphillip Initial Creation
* 01/29/09 #1271 njensen Rewrote for thrift capabilities * 01/29/09 #1271 njensen Rewrote for thrift capabilities
* 06/24/09 njensen Added sending notifications * 06/24/09 njensen Added sending notifications
* 09/22/09 3058 rjpeter Converted to IRequestHandler * 09/22/09 #3058 rjpeter Converted to IRequestHandler
* 02/12/2013 #1597 randerso Added logging to support GFE Performance investigation * 02/12/2013 #1597 randerso Added logging to support GFE Performance investigation
* 06/13/13 2044 randerso Refactored to use IFPServer * 06/13/13 #2044 randerso Refactored to use IFPServer
* 04/03/2014 #2737 randerso Changed to send ISC even when no grids are saved
* (i.e. on grid deletes)
* </pre> * </pre>
* *
* @author bphillip * @author bphillip
@ -72,13 +74,10 @@ public class SaveGfeGridHandler extends BaseGfeRequestHandler implements
public ServerResponse<?> handleRequest(SaveGfeGridRequest request) public ServerResponse<?> handleRequest(SaveGfeGridRequest request)
throws Exception { throws Exception {
ServerResponse<?> sr = null; ServerResponse<?> sr = null;
List<SaveGridRequest> saveRequest = request.getSaveRequest(); List<SaveGridRequest> saveRequest = request.getSaveRequests();
WsId workstationID = request.getWorkstationID(); WsId workstationID = request.getWorkstationID();
String siteID = request.getSiteID(); String siteID = request.getSiteID();
boolean clientSendStatus = false; boolean clientSendStatus = request.isClientSendStatus();
if (!saveRequest.isEmpty()) {
clientSendStatus = saveRequest.get(0).isClientSendStatus();
}
try { try {
ITimer timer = TimeUtil.getTimer(); ITimer timer = TimeUtil.getTimer();
@ -102,11 +101,10 @@ public class SaveGfeGridHandler extends BaseGfeRequestHandler implements
saveRequest.size()); saveRequest.size());
for (SaveGridRequest save : saveRequest) { for (SaveGridRequest save : saveRequest) {
DatabaseID dbid = save.getParmId().getDbId(); DatabaseID dbid = save.getParmId().getDbId();
// ensure Fcst database // ensure Fcst database
if (dbid.getModelName().equals("Fcst") if (dbid.getModelName().equals("Fcst")
&& dbid.getDbType().isEmpty() && dbid.getDbType().isEmpty()) {
&& !save.getGridSlices().isEmpty()
&& save.isClientSendStatus()) {
IscSendRecord sendReq = new IscSendRecord( IscSendRecord sendReq = new IscSendRecord(
save.getParmId(), save.getParmId(),
save.getReplacementTimeRange(), "", save.getReplacementTimeRange(), "",

View file

@ -86,6 +86,7 @@ from com.raytheon.uf.edex.database.cluster import ClusterTask
# Changed WECache to limit the number of cached grids kept in memory # Changed WECache to limit the number of cached grids kept in memory
# 01/09/14 16952 randerso Fix regression made in #2517 which caused errors with overlapping grids # 01/09/14 16952 randerso Fix regression made in #2517 which caused errors with overlapping grids
# 02/04/14 17042 ryu Check in changes for randerso. # 02/04/14 17042 ryu Check in changes for randerso.
# 04/03/2014 2737 randerso Allow iscMosaic to blankOtherPeriods even when no grids received
# #
BATCH_DELAY = 0.0 BATCH_DELAY = 0.0
@ -677,7 +678,7 @@ class IscMosaic:
inTimes = self.__getIncomingValidTimes(vars[0]) inTimes = self.__getIncomingValidTimes(vars[0])
logger.info("Processing %s #Grids=%d Site=%s", parmName, len(inTimes), self.__siteID) logger.info("Processing %s #Grids=%d Site=%s", parmName, len(inTimes), self.__siteID)
if self.__eraseFirst or len(inTimes) > 0: if self.__blankOtherPeriods or self.__eraseFirst or len(inTimes) > 0:
while retryAttempt != retries: while retryAttempt != retries:
logger.debug("iscMosaic: Attempting to acquire cluster lock for: %s", parmName) logger.debug("iscMosaic: Attempting to acquire cluster lock for: %s", parmName)
startTime = time.time() startTime = time.time()

View file

@ -35,34 +35,75 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Sep 22, 2009 3058 rjpeter Initial creation * Sep 22, 2009 3058 rjpeter Initial creation
* Apr 03, 2014 2737 randerso Moved clientSendStatus from SaveGridRequest
* Added proper constructor
* *
* </pre> * </pre>
* *
* @author rjpeter * @author rjpeter
* @version 1.0 * @version 1.0
*/ */
@DynamicSerialize @DynamicSerialize
public class SaveGfeGridRequest extends AbstractGfeRequest { public class SaveGfeGridRequest extends AbstractGfeRequest {
@DynamicSerializeElement /**
private List<SaveGridRequest> saveRequest = new ArrayList<SaveGridRequest>(); * Denotes whether to send ISC grids on save based on the client's
* preferences
*/
public void addRequest(SaveGridRequest req) { @DynamicSerializeElement
saveRequest.add(req); private boolean clientSendStatus = true;
@DynamicSerializeElement
private List<SaveGridRequest> saveRequests = new ArrayList<SaveGridRequest>();
/**
* Default constructor for serialization
*/
public SaveGfeGridRequest() {
}
/**
* Constructor
*
* @param clientSendStatus
* true if ISC grids should be sent
* @param saveRequests
* the save requests
*/
public SaveGfeGridRequest(boolean clientSendStatus,
List<SaveGridRequest> saveRequests) {
this.clientSendStatus = clientSendStatus;
this.saveRequests = saveRequests;
}
/**
* @return the clientSendStatus
*/
public boolean isClientSendStatus() {
return clientSendStatus;
}
/**
* @param clientSendStatus
* the clientSendStatus to set
*/
public void setClientSendStatus(boolean clientSendStatus) {
this.clientSendStatus = clientSendStatus;
} }
/** /**
* @return the saveRequest * @return the saveRequest
*/ */
public List<SaveGridRequest> getSaveRequest() { public List<SaveGridRequest> getSaveRequests() {
return saveRequest; return saveRequests;
} }
/** /**
* @param saveRequest * @param saveRequest
* the saveRequest to set * the saveRequest to set
*/ */
public void setSaveRequest(List<SaveGridRequest> saveRequest) { public void setSaveRequests(List<SaveGridRequest> saveRequests) {
this.saveRequest = saveRequest; this.saveRequests = saveRequests;
} }
} }

View file

@ -25,7 +25,6 @@ import java.util.List;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID;
import com.raytheon.uf.common.serialization.ISerializableObject;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
@ -39,6 +38,7 @@ import com.raytheon.uf.common.time.TimeRange;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 04/08/08 #875 bphillip Initial Creation * 04/08/08 #875 bphillip Initial Creation
* 06/17/08 #940 bphillip Implemented GFE Locking * 06/17/08 #940 bphillip Implemented GFE Locking
* 04/03/2014 #2737 randerso Moved clientSendStatus from SaveGridRequest
* *
* </pre> * </pre>
* *
@ -47,7 +47,7 @@ import com.raytheon.uf.common.time.TimeRange;
*/ */
@DynamicSerialize @DynamicSerialize
public class SaveGridRequest implements ISerializableObject { public class SaveGridRequest {
/** The grid slices */ /** The grid slices */
@ -64,14 +64,6 @@ public class SaveGridRequest implements ISerializableObject {
@DynamicSerializeElement @DynamicSerializeElement
private TimeRange replacementTimeRange; private TimeRange replacementTimeRange;
/**
* Denotes whether to send ISC grids on save based on the client's
* preferences
*/
@DynamicSerializeElement
private boolean clientSendStatus = true;
/** /**
* Creates a new VerifyGridRequest * Creates a new VerifyGridRequest
*/ */
@ -86,12 +78,6 @@ public class SaveGridRequest implements ISerializableObject {
this.gridSlices = gridSlices; this.gridSlices = gridSlices;
} }
public SaveGridRequest(ParmID parmId, TimeRange replacementTimeRange,
List<GFERecord> gridSlices, boolean clientSendStatus) {
this(parmId, replacementTimeRange, gridSlices);
this.clientSendStatus = clientSendStatus;
}
public ParmID getParmId() { public ParmID getParmId() {
return parmId; return parmId;
} }
@ -127,20 +113,4 @@ public class SaveGridRequest implements ISerializableObject {
public void addRecord(GFERecord rec) { public void addRecord(GFERecord rec) {
this.gridSlices.add(rec); this.gridSlices.add(rec);
} }
/**
* @return the clientSendStatus
*/
public boolean isClientSendStatus() {
return clientSendStatus;
}
/**
* @param clientSendStatus
* the clientSendStatus to set
*/
public void setClientSendStatus(boolean clientSendStatus) {
this.clientSendStatus = clientSendStatus;
}
} }