Skip to content

Commit

Permalink
0001390: Not routing configuration properly when a source node group …
Browse files Browse the repository at this point in the history
…has multiple target node groups
  • Loading branch information
chenson42 committed Aug 18, 2013
1 parent 94033ca commit 5600d9b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
Expand Up @@ -23,7 +23,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;


import org.jumpmind.db.model.Table;
import org.jumpmind.symmetric.config.ITriggerCreationListener;
import org.jumpmind.symmetric.model.Node;
Expand Down Expand Up @@ -54,7 +54,9 @@ public interface ITriggerRouterService {
* @param sourceGroupId group id of the node being registered with
* @param targetGroupId group id of the node that is registering
*/
public List<TriggerRouter> buildTriggerRoutersForSymmetricTables(String version, NodeGroupLink nodeGroupLink, String... tablesToExclude);
public List<TriggerRouter> buildTriggerRoutersForSymmetricTables(String version, NodeGroupLink nodeGroupLink, String... tablesToExclude);

public String buildSymmetricTableRouterId(String triggerId, String sourceNodeGroupId, String targetNodeGroupId);

public Trigger getTriggerForCurrentNodeById(String triggerId);

Expand Down
Expand Up @@ -530,9 +530,12 @@ private void insertFileSyncBatchForReload(Node targetNode, long loadId, String c
TriggerHistory fileSyncSnapshotHistory = triggerRouterService.findTriggerHistory(null,
null,
TableConstants.getTableName(tablePrefix, TableConstants.SYM_FILE_SNAPSHOT));
String routerid = triggerRouterService.buildSymmetricTableRouterId(
fileSyncSnapshotHistory.getTriggerId(), parameterService.getNodeGroupId(),
targetNode.getNodeGroupId());
TriggerRouter fileSyncSnapshotTriggerRouter = triggerRouterService
.getTriggerRouterForCurrentNode(fileSyncSnapshotHistory.getTriggerId(),
fileSyncSnapshotHistory.getTriggerId(), true);
routerid, true);
// file sync reload event needs to be on the file sync channel to be
// processed
insertReloadEvent(transaction, targetNode, fileSyncSnapshotTriggerRouter,
Expand Down
Expand Up @@ -428,14 +428,18 @@ public List<TriggerRouter> buildTriggerRoutersForSymmetricTables(String version,
}
return triggerRouters;
}

public String buildSymmetricTableRouterId(String triggerId, String sourceNodeGroupId, String targetNodeGroupId) {
return String.format("%s_%s_2_%s", triggerId, sourceNodeGroupId, targetNodeGroupId);
}

protected TriggerRouter buildTriggerRoutersForSymmetricTables(String version, Trigger trigger,
NodeGroupLink nodeGroupLink) {
TriggerRouter triggerRouter = new TriggerRouter();
triggerRouter.setTrigger(trigger);

Router router = triggerRouter.getRouter();
router.setRouterId(trigger.getTriggerId());
router.setRouterId(buildSymmetricTableRouterId(trigger.getTriggerId(), nodeGroupLink.getSourceNodeGroupId(), nodeGroupLink.getTargetNodeGroupId()));
if (TableConstants.getTableName(tablePrefix, TableConstants.SYM_FILE_SNAPSHOT).equals(
trigger.getSourceTableName())) {
router.setRouterType(FileSyncDataRouter.ROUTER_TYPE);
Expand Down Expand Up @@ -716,11 +720,11 @@ public List<Router> getRouters() {
}

public List<TriggerRouter> getAllTriggerRoutersForCurrentNode(String sourceNodeGroupId) {
List<TriggerRouter> triggers = (List<TriggerRouter>) sqlTemplate.query(
List<TriggerRouter> triggerRouters = (List<TriggerRouter>) sqlTemplate.query(
getTriggerRouterSql("activeTriggersForSourceNodeGroupSql"),
new TriggerRouterMapper(), sourceNodeGroupId);
mergeInConfigurationTablesTriggerRoutersForCurrentNode(sourceNodeGroupId, triggers);
return triggers;
mergeInConfigurationTablesTriggerRoutersForCurrentNode(sourceNodeGroupId, triggerRouters);
return triggerRouters;
}

public List<TriggerRouter> getAllTriggerRoutersForReloadForCurrentNode(
Expand Down

0 comments on commit 5600d9b

Please sign in to comment.