Merge "Issue #2737 Make iscMosaic remove data from ISC when grids are deleted." into development

Former-commit-id: 2a15a3d87f [formerly d4d7e81799] [formerly 83d660cf2e] [formerly 9aca9a23b621306e017fb3123a6902ff25149da6 [formerly 83d660cf2e [formerly 2042d975c2]]] [formerly debde74356 [formerly 83d660cf2e [formerly 2042d975c2] [formerly debde74356 [formerly 93c224f21b0aec4eef0eaf0f57c5f48237c68265]]]]
Former-commit-id: debde74356
Former-commit-id: 4259625c33c29372ce2d651a17921ad27fe782f5 [formerly 108d722236ee29849900176e85dc9365b6df27dd] [formerly c3a4664534 [formerly d4fabcc4b1]]
Former-commit-id: c3a4664534
Former-commit-id: bb12a4b904
This commit is contained in:
Ron Anderson 2014-04-04 08:35:12 -05:00 committed by Gerrit Code Review
commit 2814ab1cec
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,
* fix warnings.
* 11/20/2013 #2331 randerso Added getTopoData method
* 04/03/2014 #2737 randerso Moved clientISCSendStatus to SaveGFEGridRequest
*
* </pre>
*
@ -421,8 +422,8 @@ public class IFPClient {
throws GFEServerException {
ServerResponse<?> response = null;
if (!requests.isEmpty()) {
SaveGfeGridRequest request = new SaveGfeGridRequest();
request.setSaveRequest(requests);
SaveGfeGridRequest request = new SaveGfeGridRequest(
dataManager.clientISCSendStatus(), requests);
response = makeRequest(request);
}
logResponse(response);

View file

@ -84,6 +84,7 @@ import com.raytheon.viz.gfe.core.griddata.IGridData;
* logging for save performance
* 04/23/13 #1949 rjpeter Added logging of number of records.
* 06/26/13 #2044 randerso Fixed error message priority
* 04/03/2014 #2737 randerso Moved clientSendStatus from SaveGridRequest to SaveGFEGridRequest
* </pre>
*
* @author chammack
@ -618,8 +619,7 @@ public class DbParm extends Parm {
if (size > GfeClientConfig.getInstance().getGridSaveThreshold()) {
TimeRange tr = new TimeRange(saveTime.getStart(), data
.getGridTime().getEnd());
sgr.add(new SaveGridRequest(getParmID(), tr, records,
dataManager.clientISCSendStatus()));
sgr.add(new SaveGridRequest(getParmID(), tr, records));
// save this batch of grids
if (doSave(sgr)) {
@ -647,8 +647,7 @@ public class DbParm extends Parm {
// if any grids or any time not saved
if ((size > 0) || (saveTime.getDuration() > 0)) {
sgr.add(new SaveGridRequest(getParmID(), saveTime, records,
dataManager.clientISCSendStatus()));
sgr.add(new SaveGridRequest(getParmID(), saveTime, records));
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,
* paint using the time in paintProps and
* remove dead code in paintInternal
* Apr 03, 2014 2737 randerso Uncommented out listers for iscParm inventory changed
*
* </pre>
*
@ -322,8 +323,7 @@ public class GFEResource extends
* the datamanager responsible for it
*/
public GFEResource(GFEResourceData resourceData, LoadProperties loadProps,
Parm parm,
DataManager dataManager) {
Parm parm, DataManager dataManager) {
super(resourceData, loadProps);
this.resourceData.addChangeListener(this);
this.parm = parm;
@ -1580,12 +1580,12 @@ public class GFEResource extends
.getISCParm(this.parm);
if (iscParm != null) {
if (message.show()) {
// iscParm.getListeners().addParmInventoryChangedListener(
// this.parmInventoryChanged);
iscParm.getListeners().addParmInventoryChangedListener(
this.parmInventoryChanged);
iscParm.getListeners().addGridChangedListener(this.gridChanged);
} else {
// iscParm.getListeners().removeParmInventoryChangedListener(
// this.parmInventoryChanged);
iscParm.getListeners().removeParmInventoryChangedListener(
this.parmInventoryChanged);
iscParm.getListeners().removeGridChangedListener(
this.gridChanged);
}

View file

@ -52,9 +52,11 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* 06/30/08 #875 bphillip Initial Creation
* 01/29/09 #1271 njensen Rewrote for thrift capabilities
* 06/24/09 njensen Added sending notifications
* 09/22/09 3058 rjpeter Converted to IRequestHandler
* 02/12/2013 #1597 randerso Added logging to support GFE Performance investigation
* 06/13/13 2044 randerso Refactored to use IFPServer
* 09/22/09 #3058 rjpeter Converted to IRequestHandler
* 02/12/2013 #1597 randerso Added logging to support GFE Performance investigation
* 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>
*
* @author bphillip
@ -72,13 +74,10 @@ public class SaveGfeGridHandler extends BaseGfeRequestHandler implements
public ServerResponse<?> handleRequest(SaveGfeGridRequest request)
throws Exception {
ServerResponse<?> sr = null;
List<SaveGridRequest> saveRequest = request.getSaveRequest();
List<SaveGridRequest> saveRequest = request.getSaveRequests();
WsId workstationID = request.getWorkstationID();
String siteID = request.getSiteID();
boolean clientSendStatus = false;
if (!saveRequest.isEmpty()) {
clientSendStatus = saveRequest.get(0).isClientSendStatus();
}
boolean clientSendStatus = request.isClientSendStatus();
try {
ITimer timer = TimeUtil.getTimer();
@ -102,11 +101,10 @@ public class SaveGfeGridHandler extends BaseGfeRequestHandler implements
saveRequest.size());
for (SaveGridRequest save : saveRequest) {
DatabaseID dbid = save.getParmId().getDbId();
// ensure Fcst database
if (dbid.getModelName().equals("Fcst")
&& dbid.getDbType().isEmpty()
&& !save.getGridSlices().isEmpty()
&& save.isClientSendStatus()) {
&& dbid.getDbType().isEmpty()) {
IscSendRecord sendReq = new IscSendRecord(
save.getParmId(),
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
# 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.
# 04/03/2014 2737 randerso Allow iscMosaic to blankOtherPeriods even when no grids received
#
BATCH_DELAY = 0.0
@ -677,7 +678,7 @@ class IscMosaic:
inTimes = self.__getIncomingValidTimes(vars[0])
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:
logger.debug("iscMosaic: Attempting to acquire cluster lock for: %s", parmName)
startTime = time.time()

View file

@ -35,34 +35,75 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 22, 2009 3058 rjpeter Initial creation
* Apr 03, 2014 2737 randerso Moved clientSendStatus from SaveGridRequest
* Added proper constructor
*
* </pre>
*
* @author rjpeter
* @version 1.0
*/
@DynamicSerialize
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) {
saveRequest.add(req);
@DynamicSerializeElement
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
*/
public List<SaveGridRequest> getSaveRequest() {
return saveRequest;
public List<SaveGridRequest> getSaveRequests() {
return saveRequests;
}
/**
* @param saveRequest
* the saveRequest to set
*/
public void setSaveRequest(List<SaveGridRequest> saveRequest) {
this.saveRequest = saveRequest;
public void setSaveRequests(List<SaveGridRequest> saveRequests) {
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.ParmID;
import com.raytheon.uf.common.serialization.ISerializableObject;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
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
* 06/17/08 #940 bphillip Implemented GFE Locking
* 04/03/2014 #2737 randerso Moved clientSendStatus from SaveGridRequest
*
* </pre>
*
@ -47,7 +47,7 @@ import com.raytheon.uf.common.time.TimeRange;
*/
@DynamicSerialize
public class SaveGridRequest implements ISerializableObject {
public class SaveGridRequest {
/** The grid slices */
@ -64,14 +64,6 @@ public class SaveGridRequest implements ISerializableObject {
@DynamicSerializeElement
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
*/
@ -86,12 +78,6 @@ public class SaveGridRequest implements ISerializableObject {
this.gridSlices = gridSlices;
}
public SaveGridRequest(ParmID parmId, TimeRange replacementTimeRange,
List<GFERecord> gridSlices, boolean clientSendStatus) {
this(parmId, replacementTimeRange, gridSlices);
this.clientSendStatus = clientSendStatus;
}
public ParmID getParmId() {
return parmId;
}
@ -127,20 +113,4 @@ public class SaveGridRequest implements ISerializableObject {
public void addRecord(GFERecord 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;
}
}