diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/INodeService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/INodeService.java index 92442dbed5..a7ea1dec5c 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/INodeService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/INodeService.java @@ -124,13 +124,13 @@ public void ignoreNodeChannelForExternalId(boolean ignore, String channelId, public boolean updateNodeSecurity(ISqlTransaction transaction, NodeSecurity security); - public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled); + public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange); - public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled); + public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled, boolean syncChange); - public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled); + public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled, boolean syncChange); - public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled); + public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange); public INodeIdCreator getNodeIdCreator(); diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java index 1af521cf66..964f18bfe9 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java @@ -399,11 +399,11 @@ public void insertReloadEvents(Node targetNode, boolean reverse) { } } + INodeService nodeService = engine.getNodeService(); if (!reverse) { - engine.getNodeService().setInitialLoadEnabled(transaction, nodeIdRecord, false); + nodeService.setInitialLoadEnabled(transaction, nodeIdRecord, false, false); } else { - engine.getNodeService().setReverseInitialLoadEnabled(transaction, nodeIdRecord, - false); + nodeService.setReverseInitialLoadEnabled(transaction, nodeIdRecord, false, false); } insertNodeSecurityUpdate(transaction, nodeIdRecord, targetNode.getNodeId(), @@ -689,9 +689,9 @@ public String reloadNode(String nodeId, boolean reverseLoad) { Node targetNode = engine.getNodeService().findNode(nodeId); if (targetNode == null) { return String.format("Unknown node %s", nodeId); - } else if (reverseLoad && nodeService.setReverseInitialLoadEnabled(nodeId, true)) { + } else if (reverseLoad && nodeService.setReverseInitialLoadEnabled(nodeId, true, true)) { return String.format("Successfully enabled reverse initial load for node %s", nodeId); - } else if (nodeService.setInitialLoadEnabled(nodeId, true)) { + } else if (nodeService.setInitialLoadEnabled(nodeId, true, true)) { return String.format("Successfully enabled initial load for node %s", nodeId); } else { return String.format("Could not enable initial load for %s", nodeId); diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java index b6b3bc84cf..fd8593024f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java @@ -459,25 +459,35 @@ public boolean updateNodeSecurity(ISqlTransaction transaction, NodeSecurity secu Types.VARCHAR }) == 1; } - public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled) { - NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true); - if (nodeSecurity != null) { - nodeSecurity.setInitialLoadEnabled(initialLoadEnabled); - if (initialLoadEnabled) { - nodeSecurity.setInitialLoadTime(null); - } else { - nodeSecurity.setInitialLoadTime(new Date()); + public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, + boolean initialLoadEnabled, boolean syncChange) { + try { + if (!syncChange) { + symmetricDialect.disableSyncTriggers(transaction, nodeId); + } + NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true); + if (nodeSecurity != null) { + nodeSecurity.setInitialLoadEnabled(initialLoadEnabled); + if (initialLoadEnabled) { + nodeSecurity.setInitialLoadTime(null); + } else { + nodeSecurity.setInitialLoadTime(new Date()); + } + return updateNodeSecurity(transaction, nodeSecurity); + } + return false; + } finally { + if (!syncChange) { + symmetricDialect.enableSyncTriggers(transaction); } - return updateNodeSecurity(transaction, nodeSecurity); } - return false; } - public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) { + public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) { ISqlTransaction transaction = null; try { transaction = sqlTemplate.startSqlTransaction(); - boolean updated = setInitialLoadEnabled(transaction, nodeId, initialLoadEnabled); + boolean updated = setInitialLoadEnabled(transaction, nodeId, initialLoadEnabled, syncChange); transaction.commit(); return updated; } finally { @@ -485,28 +495,39 @@ public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) } } - public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled) { - NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true); - if (nodeSecurity != null) { - nodeSecurity.setRevInitialLoadEnabled(initialLoadEnabled); - if (initialLoadEnabled) { - nodeSecurity.setRevInitialLoadTime(null); - } else { - nodeSecurity.setRevInitialLoadTime(new Date()); + public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, + boolean initialLoadEnabled, boolean syncChange) { + try { + if (!syncChange) { + symmetricDialect.disableSyncTriggers(transaction, nodeId); + } + + NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true); + if (nodeSecurity != null) { + nodeSecurity.setRevInitialLoadEnabled(initialLoadEnabled); + if (initialLoadEnabled) { + nodeSecurity.setRevInitialLoadTime(null); + } else { + nodeSecurity.setRevInitialLoadTime(new Date()); + } + return updateNodeSecurity(transaction, nodeSecurity); + } + return false; + } finally { + if (!syncChange) { + symmetricDialect.enableSyncTriggers(transaction); } - return updateNodeSecurity(transaction, nodeSecurity); } - return false; - } + } - public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) { + public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) { ISqlTransaction transaction = null; try { transaction = sqlTemplate.startSqlTransaction(); - boolean updated = setReverseInitialLoadEnabled(transaction, nodeId, initialLoadEnabled); + boolean updated = setReverseInitialLoadEnabled(transaction, nodeId, initialLoadEnabled, syncChange); transaction.commit(); return updated; - } finally { + } finally { close(transaction); } } diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java index f14be05435..411fa4d1fd 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java @@ -193,38 +193,11 @@ public boolean registerNode(Node nodePriorToRegistration, String remoteHost, Str if ((security != null && security.getInitialLoadTime() == null) || isRequestedRegistration) { if (parameterService.is(ParameterConstants.AUTO_RELOAD_ENABLED)) { - ISqlTransaction transaction = null; - try { - transaction = sqlTemplate.startSqlTransaction(); - symmetricDialect.disableSyncTriggers(transaction, - nodeId); - - nodeService.setInitialLoadEnabled(transaction, nodeId, - true); - transaction.commit(); - } finally { - symmetricDialect.enableSyncTriggers(transaction); - close(transaction); - } - + nodeService.setInitialLoadEnabled(nodeId, true, false); } - if (parameterService - .is(ParameterConstants.AUTO_RELOAD_REVERSE_ENABLED)) { - ISqlTransaction transaction = null; - try { - transaction = sqlTemplate.startSqlTransaction(); - symmetricDialect.disableSyncTriggers(transaction, - nodeId); - - nodeService.setReverseInitialLoadEnabled(transaction, - nodeId, true); - transaction.commit(); - } finally { - symmetricDialect.enableSyncTriggers(transaction); - close(transaction); - } - + if (parameterService.is(ParameterConstants.AUTO_RELOAD_REVERSE_ENABLED)) { + nodeService.setReverseInitialLoadEnabled(nodeId, true, false); } } diff --git a/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/MockNodeService.java b/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/MockNodeService.java index 86fa206f52..092ba3fa1d 100644 --- a/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/MockNodeService.java +++ b/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/MockNodeService.java @@ -163,12 +163,12 @@ public boolean isRegistrationEnabled(String nodeId) { return false; } - public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) { + public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) { return false; } public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, - boolean initialLoadEnabled) { + boolean initialLoadEnabled, boolean syncChange) { return false; } @@ -247,11 +247,11 @@ public boolean removeOfflineServerListener(IOfflineServerListener listener) { } public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, - boolean initialLoadEnabled) { + boolean initialLoadEnabled, boolean syncChange) { return true; } - public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) { + public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) { return true; }