Skip to content

Commit

Permalink
0005508: Multiple active trigger history for same table
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Oct 4, 2022
1 parent f61a2d5 commit ff24043
Showing 1 changed file with 22 additions and 10 deletions.
Expand Up @@ -3274,16 +3274,28 @@ public Data mapRow(Row row) {
if (table != null && trigger != null) {
List<TriggerHistory> activeTriggerHistories = engine.getTriggerRouterService().getActiveTriggerHistories();
triggerHistory = new TriggerHistory(table, trigger, engine.getSymmetricDialect().getTriggerTemplate());
triggerHistory.setTriggerHistoryId(triggerHistId);
triggerHistory.setLastTriggerBuildReason(TriggerReBuildReason.TRIGGER_HIST_MISSING);
triggerHistory.setNameForInsertTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.INSERT,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
triggerHistory.setNameForUpdateTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.UPDATE,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
triggerHistory.setNameForDeleteTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.DELETE,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
log.warn("Could not find a trigger history row for the table {} for data_id {}. Generating a new trigger history row.", tableName, data.getDataId());
engine.getTriggerRouterService().insert(triggerHistory);
boolean foundExisting = false;
for (TriggerHistory hist : activeTriggerHistories) {
if (hist.getTriggerId().equals(triggerHistory.getTriggerId()) &&
hist.getFullyQualifiedSourceTableName().equalsIgnoreCase(triggerHistory.getFullyQualifiedSourceTableName())) {
foundExisting = true;
triggerHistory = hist;
break;
}
}
if (!foundExisting) {
triggerHistory.setTriggerHistoryId(triggerHistId);
triggerHistory.setLastTriggerBuildReason(TriggerReBuildReason.TRIGGER_HIST_MISSING);
triggerHistory.setNameForInsertTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.INSERT,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
triggerHistory.setNameForUpdateTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.UPDATE,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
triggerHistory.setNameForDeleteTrigger(engine.getTriggerRouterService().getTriggerName(DataEventType.DELETE,
symmetricDialect.getMaxTriggerNameLength(), trigger, table, activeTriggerHistories, null));
log.warn("Could not find a trigger history row for the table {} for data_id {}. Generating a new trigger history row.",
tableName, data.getDataId());
engine.getTriggerRouterService().insert(triggerHistory);
}
} else {
if (missingConfigTriggerHist == null) {
missingConfigTriggerHist = new HashSet<Integer>();
Expand Down

0 comments on commit ff24043

Please sign in to comment.