Skip to content

Commit

Permalink
0005023: Sync Triggers should execute successfully in parallel by table
Browse files Browse the repository at this point in the history
  • Loading branch information
Philip Marzullo committed Jun 11, 2021
1 parent 184eebc commit 77b2dbe
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
Expand Up @@ -166,10 +166,12 @@ final public String qualifiedSourceTablePrefix() {
public void nullOutBlankFields() {
if (StringUtils.isBlank(sourceCatalogName)) {
sourceCatalogName = null;
sourceCatalogNameUnescaped = null;
isSourceCatalogWildCarded = false;
}
if (StringUtils.isBlank(sourceSchemaName)) {
sourceSchemaName = null;
sourceSchemaNameUnescaped = null;
isSourceSchemaWildCarded = false;
}
syncOnInsertCondition = StringUtils.defaultString(StringUtils.trimToNull(syncOnInsertCondition), DEFAULT_CONDITION);
Expand Down
Expand Up @@ -150,6 +150,9 @@ public interface ITriggerRouterService {

public void inactivateTriggerHistory(TriggerHistory history);

public TriggerHistory getNewestTriggerHistoryForTrigger(List<TriggerHistory> activeTriggerHistories, String triggerId, String catalogName,
String schemaName, String tableName);

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

Expand Down
Expand Up @@ -30,6 +30,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -2063,6 +2064,16 @@ protected TriggerHistory rebuildTriggerIfNecessary(StringBuilder sqlBuffer,

if (hist == null && (oldhist == null || (!triggerExists && triggerIsActive) || (isDeadTrigger && forceRebuild))) {
insert(newTriggerHist);
for (Iterator<TriggerHistory> it = activeTriggerHistories.iterator(); it.hasNext(); ) {
TriggerHistory triggerHistory = it.next();
if (StringUtils.equals(triggerHistory.getSourceCatalogName(), newTriggerHist.getSourceCatalogName())) {
if (StringUtils.equals(triggerHistory.getSourceSchemaName(), newTriggerHist.getSourceSchemaName())) {
if (StringUtils.equals(triggerHistory.getSourceTableName(), newTriggerHist.getSourceTableName())) {
it.remove();
}
}
}
}
activeTriggerHistories.add(newTriggerHist);
hist = getNewestTriggerHistoryForTrigger(activeTriggerHistories, trigger.getTriggerId(),
trigger.isSourceCatalogNameWildCarded() ? table.getCatalog() : trigger.getSourceCatalogNameUnescaped(),
Expand Down

0 comments on commit 77b2dbe

Please sign in to comment.