From 9bb3123ac3c0895ca1aa199a84052b8eafcfdc0b Mon Sep 17 00:00:00 2001 From: mmichalek Date: Tue, 30 May 2017 18:34:05 -0400 Subject: [PATCH] 0003130: Guard against case mismatches in trigger id's and router id's when doing table reloads --- .../jumpmind/symmetric/service/impl/DataService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java index 36c9c0813a..a3d148d113 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.collections.map.CaseInsensitiveMap; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.NotImplementedException; import org.apache.commons.lang.StringEscapeUtils; @@ -54,6 +55,7 @@ import org.jumpmind.db.sql.mapper.NumberMapper; import org.jumpmind.exception.IoException; import org.jumpmind.symmetric.ISymmetricEngine; +import org.jumpmind.symmetric.SymmetricException; import org.jumpmind.symmetric.common.Constants; import org.jumpmind.symmetric.common.ParameterConstants; import org.jumpmind.symmetric.common.TableConstants; @@ -526,11 +528,12 @@ public void insertReloadEvents(Node targetNode, boolean reverse, List convertReloadListToMap(List reloadRequests) { if (reloadRequests == null) { return null; } - Map reloadMap = new HashMap(); + Map reloadMap = new CaseInsensitiveMap(); for (TableReloadRequest item : reloadRequests) { reloadMap.put(item.getIdentifier(), item); } @@ -631,7 +634,12 @@ private void insertSqlEventsPriorToReload(Node targetNode, String nodeIdRecord, List triggerRouters = triggerRoutersByHistoryId.get(triggerHistory .getTriggerHistoryId()); for (TriggerRouter triggerRouter : triggerRouters) { - TableReloadRequest currentRequest = reloadRequests.get(triggerRouter.getTriggerId() + triggerRouter.getRouterId()); + String key = triggerRouter.getTriggerId() + triggerRouter.getRouterId(); + TableReloadRequest currentRequest = reloadRequests.get(key); + if (currentRequest == null) { + throw new SymmetricException("Could not locate table reload request for key '" + key + + "'. Available requests are: " + reloadRequests.keySet()); + } beforeSql = currentRequest.getBeforeCustomSql(); if (isNotBlank(beforeSql)) {