From 6acb71d2ff2e5c864933a4d36728e8b68fbcfdb4 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Tue, 17 Nov 2009 14:40:21 +0000 Subject: [PATCH] Redo the remove inactive triggers logic --- .../service/ITriggerRouterService.java | 2 -- .../service/impl/TriggerRouterService.java | 27 +++++++------------ .../impl/triggerrouter-service-sql.xml | 4 +-- .../symmetric-messages_en_US.properties | 1 - 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java index b7d2cb4d7c..645dc52d95 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java @@ -53,8 +53,6 @@ public interface ITriggerRouterService { public List getActiveTriggerRoutersForReload(String sourceNodeGroupId, String targetNodeGroupId); - public List getInactiveTriggerRouters(String sourceNodeGroupId); - public TriggerRouter findTriggerRouter(String table, String sourceNodeGroupId); public TriggerRouter findTriggerRouter(String table, String sourceNodeGroupId, String targetNodeGroupId, String channel); diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java index bd27e251cd..03edc93edf 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java @@ -278,10 +278,10 @@ public List getActiveTriggerRoutersForReload(String sourceNodeGro Constants.CHANNEL_CONFIG }, new TriggerRouterMapper()); } - public List getInactiveTriggerRouters(String sourceNodeGroupId) { - return (List) jdbcTemplate.query(getTriggerRouterSqlPrefix() - + getSql("inactiveTriggersForSourceNodeGroupSql"), new Object[] { sourceNodeGroupId }, - new TriggerRouterMapper()); + protected List getInactiveTriggerHistories() { + return (List) jdbcTemplate.query(getSql("allTriggerHistSql") + + getSql("inactiveTriggerHistoryWhereSql"), new Object[] { tablePrefix.toUpperCase() + "_%" }, + new TriggerHistoryMapper()); } public TriggerRouter findTriggerRouter(String table, String sourceNodeGroupId, String targetNodeGroupId, @@ -429,23 +429,20 @@ public void syncTriggers(StringBuilder sqlBuffer, boolean gen_always) { } protected void removeInactiveTriggers(StringBuilder sqlBuffer) { - List triggers = new TriggerSelector(getInactiveTriggerRouters(parameterService - .getString(ParameterConstants.NODE_GROUP_ID))).select(); - for (Trigger trigger : triggers) { - TriggerHistory history = getNewestTriggerHistoryForTrigger(trigger.getTriggerId()); - if (history != null) { + List triggers = getInactiveTriggerHistories(); + for (TriggerHistory history : triggers) { log.info("TriggersRemoving", history.getSourceTableName()); dbDialect.removeTrigger(sqlBuffer, history.getSourceCatalogName(), history.getSourceSchemaName(), - history.getNameForInsertTrigger(), trigger.getSourceTableName(), history); + history.getNameForInsertTrigger(), history.getSourceTableName(), history); dbDialect.removeTrigger(sqlBuffer, history.getSourceCatalogName(), history.getSourceSchemaName(), - history.getNameForDeleteTrigger(), trigger.getSourceTableName(), history); + history.getNameForDeleteTrigger(), history.getSourceTableName(), history); dbDialect.removeTrigger(sqlBuffer, history.getSourceCatalogName(), history.getSourceSchemaName(), - history.getNameForUpdateTrigger(), trigger.getSourceTableName(), history); + history.getNameForUpdateTrigger(), history.getSourceTableName(), history); if (parameterService.is(ParameterConstants.AUTO_SYNC_TRIGGERS)) { if (this.triggerCreationListeners != null) { for (ITriggerCreationListener l : this.triggerCreationListeners) { - l.triggerInactivated(trigger, history); + l.triggerInactivated(null, history); } } } @@ -461,10 +458,6 @@ protected void removeInactiveTriggers(StringBuilder sqlBuffer) { } else { inactivateTriggerHistory(history); } - - } else { - log.info("TriggersRemovingSkipped"); - } } } diff --git a/symmetric/src/main/resources/org/jumpmind/symmetric/service/impl/triggerrouter-service-sql.xml b/symmetric/src/main/resources/org/jumpmind/symmetric/service/impl/triggerrouter-service-sql.xml index b980c1af94..77bea874a7 100644 --- a/symmetric/src/main/resources/org/jumpmind/symmetric/service/impl/triggerrouter-service-sql.xml +++ b/symmetric/src/main/resources/org/jumpmind/symmetric/service/impl/triggerrouter-service-sql.xml @@ -98,9 +98,9 @@ tr.initial_load_order - + - where r.source_node_group_id = ? + where trigger_id not in (select trigger_id from $[sym.sync.table.prefix]_trigger) and source_table_name not like ? diff --git a/symmetric/src/main/resources/symmetric-messages_en_US.properties b/symmetric/src/main/resources/symmetric-messages_en_US.properties index 982f5da77c..dbde263900 100644 --- a/symmetric/src/main/resources/symmetric-messages_en_US.properties +++ b/symmetric/src/main/resources/symmetric-messages_en_US.properties @@ -225,7 +225,6 @@ TriggerTableMissing=The configured table does not exist in the datasource that i TriggerUnavailable=The trigger %s is no longer available for an initial load. TriggersRemoving=About to remove triggers for inactivated table: %s TriggersRemovingFailed=There are triggers that have been marked as inactive. Please remove triggers represented by trigger_id=%s and trigger_hist_id=%s -TriggersRemovingSkipped=A trigger was inactivated that had not yet been built, taking no action. TriggerSynchronizingFailed=Failed to synchronize trigger for %s TriggersSynchronizing=Synchronizing triggers. TriggersSynchronizingFailedLock=Did not run the syncTriggers process because the cluster service has it locked