diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IRegistrationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IRegistrationService.java index 49930e0e83..01e5289294 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IRegistrationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IRegistrationService.java @@ -102,8 +102,10 @@ public interface IRegistrationService { * registration server cannot be reach this method will continue to try with * random sleep periods up to one minute up until the registration succeeds * or the maximum number of attempts has been reached. + * Returns true if we had to register with server and was successful. + * Returns false if we did not have to register. */ - public void registerWithServer(); + public boolean registerWithServer(); /** * Client method which attempts to register with the registration.url to diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java index 583998dedc..b6c0172c53 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java @@ -85,8 +85,9 @@ synchronized public RemoteNodeStatuses pullData(boolean force) { if (identity == null || identity.isSyncEnabled()) { long minimumPeriodMs = parameterService.getLong(ParameterConstants.PULL_MINIMUM_PERIOD_MS, -1); if (force || !clusterService.isInfiniteLocked(ClusterConstants.PULL)) { - // register if we haven't already been registered - registrationService.registerWithServer(); + // register if we haven't already been registered + // Only pull if we did not have to register this time + if (!registrationService.registerWithServer()) { identity = nodeService.findIdentity(); if (identity != null) { List nodes = nodeCommunicationService @@ -108,6 +109,10 @@ synchronized public RemoteNodeStatuses pullData(boolean force) { nodeCommunication.setBatchToSendCount(0); } } + } else { + identity = nodeService.findIdentity(); + log.info("Node {}:{} just registered, not pulling yet", identity != null ? identity.getNodeGroupId() : "", identity != null ? identity.getNodeId() : ""); + } } else { log.debug("Did not run the pull process because it has been stopped"); } 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 dcc9f80751..4cc00fe47e 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 @@ -469,8 +469,9 @@ public boolean isRegisteredWithServer() { /** * @see IRegistrationService#registerWithServer() */ - public void registerWithServer() { - boolean registered = isRegisteredWithServer(); + public boolean registerWithServer() { + boolean wasRegistered = isRegisteredWithServer(); + boolean registered = wasRegistered; int maxNumberOfAttempts = parameterService .getInt(ParameterConstants.REGISTRATION_NUMBER_OF_ATTEMPTS); @@ -490,6 +491,7 @@ public void registerWithServer() { "Failed after trying to register %s times.", parameterService.getString(ParameterConstants.REGISTRATION_NUMBER_OF_ATTEMPTS))); } + return registered != wasRegistered; } public synchronized boolean attemptToRegisterWithServer(int maxNumberOfAttempts) {