Skip to content

Commit

Permalink
Merge branch '3.7' of https://github.com/JumpMind/symmetric-ds.git in…
Browse files Browse the repository at this point in the history
…to 3.7
  • Loading branch information
jumpmind-josh committed Jun 30, 2016
2 parents 74b257a + b147a93 commit 42f93dc
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 114 deletions.
Expand Up @@ -470,7 +470,7 @@ public synchronized Enumeration<Object> keys() {
runtimeProperties.setProperty("batch.incoming.errors.count",
Long.toString(engine.getIncomingBatchService().countIncomingBatchesInError()));

List<DataGap> gaps = engine.getDataService().findDataGaps();
List<DataGap> gaps = engine.getDataService().findDataGapsByStatus(DataGap.Status.GP);
runtimeProperties.setProperty("data.gap.count",
Long.toString(gaps.size()));
if (gaps.size() > 0) {
Expand Down
Expand Up @@ -80,6 +80,9 @@ public class ConfigurationChangedDataRouter extends AbstractDataRouter implement

final String CTX_KEY_REFRESH_EXTENSIONS_NEEDED = "RefreshExtensions."
+ ConfigurationChangedDataRouter.class.getSimpleName() + hashCode();

final String CTX_KEY_FLUSHED_TRIGGER_ROUTERS = "FlushedTriggerRouters."
+ ConfigurationChangedDataRouter.class.getSimpleName() + hashCode();

public final static String KEY = "symconfig";

Expand Down Expand Up @@ -326,19 +329,27 @@ protected void queueSyncTriggers(SimpleRouterContext routingContext, DataMetaDat
}

ITriggerRouterService triggerRouterService = engine.getTriggerRouterService();

boolean refreshCache = false;
if (routingContext.get(CTX_KEY_FLUSHED_TRIGGER_ROUTERS) == null) {
triggerRouterService.clearCache();
refreshCache = true;
routingContext.put(CTX_KEY_FLUSHED_TRIGGER_ROUTERS, true);
}

Trigger trigger = null;
Date lastUpdateTime = null;
String triggerId = columnValues.get("TRIGGER_ID");
if (tableMatches(dataMetaData, TableConstants.SYM_TRIGGER_ROUTER)) {
String routerId = columnValues.get("ROUTER_ID");
TriggerRouter tr = triggerRouterService.findTriggerRouterById(triggerId,
routerId);
routerId, refreshCache);
if (tr != null) {
trigger = tr.getTrigger();
lastUpdateTime = tr.getLastUpdateTime();
}
} else {
trigger = triggerRouterService.getTriggerById(triggerId);
trigger = triggerRouterService.getTriggerById(triggerId, refreshCache);
if (trigger != null) {
lastUpdateTime = trigger.getLastUpdateTime();
}
Expand Down
Expand Up @@ -21,60 +21,60 @@
package org.jumpmind.symmetric.service;

import java.util.Collection;
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.NodeGroupLink;
import org.jumpmind.symmetric.model.Router;
import org.jumpmind.symmetric.model.Trigger;
import org.jumpmind.symmetric.model.TriggerHistory;
import org.jumpmind.symmetric.model.TriggerRouter;
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.NodeGroupLink;
import org.jumpmind.symmetric.model.Router;
import org.jumpmind.symmetric.model.Trigger;
import org.jumpmind.symmetric.model.TriggerHistory;
import org.jumpmind.symmetric.model.TriggerRouter;

/**
* Provides an API to configure {@link TriggerRouter}s, {@link Trigger}s and {@link Router}s.
* Provides an API to configure {@link TriggerRouter}s, {@link Trigger}s and {@link Router}s.
*/
public interface ITriggerRouterService {


public boolean refreshFromDatabase();

public List<TriggerHistory> getActiveTriggerHistoriesFromCache();

public List<TriggerHistory> getActiveTriggerHistoriesFromCache();

public List<TriggerHistory> getActiveTriggerHistories();

public List<TriggerHistory> getActiveTriggerHistories(Trigger trigger);

public List<TriggerHistory> getActiveTriggerHistories(String tableName);

public List<TriggerRouter> getTriggerRouters(boolean refreshCache);

public List<TriggerHistory> getActiveTriggerHistories(Trigger trigger);

public List<TriggerHistory> getActiveTriggerHistories(String tableName);

public List<TriggerRouter> getTriggerRouters(boolean refreshCache);

/**
* Return a list of triggers used when extraction configuration data during
* the registration process.
* @param sourceGroupId group id of the node being registered with
* the registration process.
* @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 String buildSymmetricTableRouterId(String triggerId, String sourceNodeGroupId, String targetNodeGroupId);

public Trigger getTriggerForCurrentNodeById(String triggerId);

public TriggerRouter getTriggerRouterForCurrentNode(String triggerId, String routerId, boolean refreshCache);

/**
* Returns a list of triggers that should be active for the current node.
* @param refreshCache Indicates that the cache should be refreshed
*/
public String buildSymmetricTableRouterId(String triggerId, String sourceNodeGroupId, String targetNodeGroupId);

public Trigger getTriggerForCurrentNodeById(String triggerId);

public TriggerRouter getTriggerRouterForCurrentNode(String triggerId, String routerId, boolean refreshCache);

/**
* Returns a list of triggers that should be active for the current node.
* @param refreshCache Indicates that the cache should be refreshed
*/
public List<Trigger> getTriggersForCurrentNode(boolean refreshCache);

public Map<String, List<TriggerRouter>> getTriggerRoutersByChannel(String nodeGroupId);

/**
* Returns a map of trigger routers keyed by trigger id.
* @param refreshCache Indicates that the cache should be refreshed

/**
* Returns a map of trigger routers keyed by trigger id.
* @param refreshCache Indicates that the cache should be refreshed
*/
public Map<String, List<TriggerRouter>> getTriggerRoutersForCurrentNode(boolean refreshCache);

Expand All @@ -85,51 +85,51 @@ public interface ITriggerRouterService {
*/
public Router getActiveRouterByIdForCurrentNode(String routerId, boolean refreshCache);

public Router getRouterById(String routerId);

public Router getRouterById(String routerId, boolean refreshCache);

public Router getRouterById(String routerId);

public Router getRouterById(String routerId, boolean refreshCache);

public List<Router> getRouters();

public List<Router> getRouters(boolean replaceVariables);

/**
* Get a list of routers for a specific node group link.
*/
public List<Router> getRoutersByGroupLink(NodeGroupLink link);

public boolean isRouterBeingUsed(String routerId);

public void deleteRouter(Router router);

public List<Router> getRouters(boolean replaceVariables);

/**
* Get a list of routers for a specific node group link.
*/
public List<Router> getRoutersByGroupLink(NodeGroupLink link);

public boolean isRouterBeingUsed(String routerId);

public void deleteRouter(Router router);

public void saveRouter(Router router);

public List<TriggerRouter> getAllTriggerRoutersForCurrentNode(String sourceNodeGroupId);

/**
* Get a list of all the triggers that have been defined for the system.
*/
public List<TriggerRouter> getAllTriggerRoutersForCurrentNode(String sourceNodeGroupId);

/**
* Get a list of all the triggers that have been defined for the system.
*/
public List<Trigger> getTriggers();

public List<Trigger> getTriggers(boolean replaceTokens);

public void saveTrigger(Trigger trigger);

public void deleteTrigger(Trigger trigger);

public void dropTriggers();

public void dropTriggers(Set<String> tables);

public void createTriggersOnChannelForTables(String channelId, String catalogName, String schemaName, List<String> tables, String lastUpdateBy);

public List<Trigger> getTriggers(boolean replaceTokens);

public void saveTrigger(Trigger trigger);

public void deleteTrigger(Trigger trigger);

public void dropTriggers();

public void dropTriggers(Set<String> tables);

public void createTriggersOnChannelForTables(String channelId, String catalogName, String schemaName, List<String> tables, String lastUpdateBy);

public List<Trigger> createTriggersOnChannelForTablesWithReturn(String channelId, String catalogName,
String schemaName, List<String> tables, String lastUpdateBy);

public boolean isTriggerBeingUsed(String triggerId);

public boolean doesTriggerExist(String triggerId);


public boolean isTriggerBeingUsed(String triggerId);

public boolean doesTriggerExist(String triggerId);

public boolean doesTriggerExistForTable(String tableName);

public List<TriggerRouter> getAllTriggerRoutersForReloadForCurrentNode(String sourceNodeGroupId, String targetNodeGroupId);
Expand All @@ -139,52 +139,54 @@ public List<Trigger> createTriggersOnChannelForTablesWithReturn(String channelId
public Set<TriggerRouter> getTriggerRouterForTableForCurrentNode(String catalog, String schema, String tableName, boolean refreshCache);

public TriggerRouter findTriggerRouterById(String triggerId, String routerId);

public TriggerRouter findTriggerRouterById(String triggerId, String routerId, boolean refreshCache);

public void inactivateTriggerHistory(TriggerHistory history);

public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName,
String schemaName, String tableName);

public TriggerHistory getTriggerHistory(int historyId);

public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName,
String schemaName, String tableName);

public TriggerHistory getTriggerHistory(int historyId);

public List<TriggerHistory> findTriggerHistories(String catalogName, String schemaName, String tableName);

public TriggerHistory findTriggerHistory(String catalogName, String schemaName, String tableName);

public Trigger getTriggerById(String triggerId);

public Trigger getTriggerById(String triggerId);

public Trigger getTriggerById(String triggerId, boolean refreshCache);

public void insert(TriggerHistory newAuditRecord);

public Map<Long, TriggerHistory> getHistoryRecords();


public void deleteTriggerRouter(TriggerRouter triggerRouter);

public void deleteTriggerRouter(String triggerId, String routerId);

public void saveTriggerRouter(TriggerRouter triggerRouter, boolean updateTriggerRouterTableOnly);
public void deleteTriggerRouter(String triggerId, String routerId);

public void saveTriggerRouter(TriggerRouter triggerRouter, boolean updateTriggerRouterTableOnly);

public void saveTriggerRouter(TriggerRouter triggerRouter);

public void saveTriggerRouter(TriggerRouter triggerRouter);

public void syncTrigger(Trigger trigger, ITriggerCreationListener listener, boolean force);

public void syncTrigger(Trigger trigger, ITriggerCreationListener listener, boolean force, boolean verifyTrigger);

public void syncTrigger(Trigger trigger, ITriggerCreationListener listener, boolean force, boolean verifyTrigger);

public void syncTriggers(Table table, boolean genAlways);

public void dropTriggers(TriggerHistory history);

public void dropTriggers(TriggerHistory history);

public void syncTriggers(boolean genAlways);

public void syncTriggers();

public void syncTriggers(StringBuilder sqlBuffer, boolean genAlways);


public void addExtraConfigTable(String table);

public Map<Trigger, Exception> getFailedTriggers();

public Map<Trigger, Exception> getFailedTriggers();

public Map<Integer, List<TriggerRouter>> fillTriggerRoutersByHistIdAndSortHist(
String sourceNodeGroupId, String targetNodeGroupId, List<TriggerHistory> triggerHistories);

Expand All @@ -195,4 +197,4 @@ public Map<Integer, List<TriggerRouter>> fillTriggerRoutersByHistIdAndSortHist(
public Collection<Trigger> findMatchingTriggers(List<Trigger> triggers, String catalog, String schema,
String table);

}
}
Expand Up @@ -336,7 +336,7 @@ public void saveRegistrationRequest(RegistrationRequest request) {
request.getLastUpdateTime(), request.getRegisteredNodeId(),
request.getStatus().name(), request.getErrorMessage(), nodeGroupId,
externalId, request.getIpAddress(), request.getHostName() }, new int[] {
Types.NUMERIC, Types.VARCHAR, Types.DATE, Types.VARCHAR, Types.VARCHAR,
Types.NUMERIC, Types.VARCHAR, Types.TIMESTAMP, Types.VARCHAR, Types.VARCHAR,
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
Types.VARCHAR });
}
Expand All @@ -347,7 +347,7 @@ public void saveRegistrationRequest(RegistrationRequest request) {
new Object[] { request.getLastUpdateBy(), request.getLastUpdateTime(),
request.getRegisteredNodeId(), request.getStatus().name(), nodeGroupId,
externalId, request.getIpAddress(), request.getHostName(),
request.getErrorMessage() }, new int[] { Types.VARCHAR, Types.DATE,
request.getErrorMessage() }, new int[] { Types.VARCHAR, Types.TIMESTAMP,
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR });
}
Expand Down
Expand Up @@ -375,14 +375,12 @@ public TriggerHistory getTriggerHistory(int histId) {
}

public List<TriggerHistory> getActiveTriggerHistories(Trigger trigger) {
List<TriggerHistory> active = getActiveTriggerHistories();
List<TriggerHistory> list = new ArrayList<TriggerHistory>();
List<TriggerHistory> active = sqlTemplate.query(getSql("allTriggerHistSql", "activeTriggerHistSqlByTriggerId"),
new TriggerHistoryMapper(), trigger.getTriggerId());
for (TriggerHistory triggerHistory : active) {
if (triggerHistory.getTriggerId().equals(trigger.getTriggerId())) {
list.add(triggerHistory);
}
historyMap.put(triggerHistory.getTriggerHistoryId(), triggerHistory);
}
return list;
return active;
}

public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName,
Expand Down Expand Up @@ -867,15 +865,19 @@ public List<TriggerRouter> getAllTriggerRoutersForReloadForCurrentNode(
getTriggerRouterSql("activeTriggersForReloadSql"), new TriggerRouterMapper(),
sourceNodeGroupId, targetNodeGroupId, Constants.CHANNEL_CONFIG));
}

public TriggerRouter findTriggerRouterById(String triggerId, String routerId){
return findTriggerRouterById(triggerId, routerId, true);
}

public TriggerRouter findTriggerRouterById(String triggerId, String routerId) {
public TriggerRouter findTriggerRouterById(String triggerId, String routerId, boolean refreshCache) {
List<TriggerRouter> configs = (List<TriggerRouter>) sqlTemplate.query(
getTriggerRouterSql("selectTriggerRouterSql"), new TriggerRouterMapper(),
triggerId, routerId);
if (configs.size() > 0) {
TriggerRouter triggerRouter = configs.get(0);
triggerRouter.setRouter(getRouterById(triggerRouter.getRouter().getRouterId()));
triggerRouter.setTrigger(getTriggerById(triggerRouter.getTrigger().getTriggerId()));
triggerRouter.setRouter(getRouterById(triggerRouter.getRouter().getRouterId(), refreshCache));
triggerRouter.setTrigger(getTriggerById(triggerRouter.getTrigger().getTriggerId(), refreshCache));
return triggerRouter;
} else {
return null;
Expand Down

0 comments on commit 42f93dc

Please sign in to comment.