diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/BootstrapService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/BootstrapService.java index 2637f6c08b..3da75cfa92 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/BootstrapService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/BootstrapService.java @@ -1,6 +1,5 @@ package org.jumpmind.symmetric.service.impl; -import java.io.IOException; import java.net.ConnectException; import java.util.Date; import java.util.List; @@ -44,10 +43,13 @@ public class BootstrapService extends AbstractService implements private ITransportManager transportManager; private IDataLoaderService dataLoaderService; + + private RandomTimeSlot randomSleepTimeSlot; private boolean autoConfigureDatabase = true; public void init() { + this.randomSleepTimeSlot = new RandomTimeSlot(this.runtimeConfiguration, 60); if (autoConfigureDatabase) { logger.info("Initializing symmetric database."); dbDialect.initConfigDb(tablePrefix); @@ -168,12 +170,13 @@ public void register() { // If we cannot contact the server to register, we simply must wait and try again. while (!registered) { try { + logger.info("Attempting to register."); registered = dataLoaderService.loadData(transportManager .getRegisterTransport(new Node( this.runtimeConfiguration, dbDialect))); } catch (ConnectException e) { logger.warn("Connection failed while registering."); - } catch (IOException e) { + } catch (Exception e) { logger.error(e, e); } @@ -205,10 +208,10 @@ public void heartbeat() { } private void sleepBeforeRegistrationRetry() { - RandomTimeSlot ts = new RandomTimeSlot(this.runtimeConfiguration, 60); + try { long sleepTimeInMs = DateUtils.MILLIS_PER_SECOND - * ts.getRandomValueSeededByDomainId(); + * randomSleepTimeSlot.getRandomValueSeededByDomainId(); logger.warn("Could not register. Sleeping for " + sleepTimeInMs + "ms before attempting again."); Thread.sleep(sleepTimeInMs); diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java index e22a03156a..d88be19cc1 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java @@ -21,6 +21,7 @@ public class PullService implements IPullService { private IDataLoaderService dataLoaderService; public void pullData() { + logger.info("Pull requested"); List nodes = nodeService.findNodesToPull(); for (Node node : nodes) { try { @@ -31,6 +32,7 @@ public void pullData() { logger.error(e, e); } } + logger.info("Pull completed."); } public void setNodeService(INodeService clientService) { diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java index 6282c5256f..26d60e6f43 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java @@ -34,7 +34,7 @@ public void setExtractor(IDataExtractorService extractor) { } public void pushData() { - debug("Push requested."); + info("Push requested."); List clients = nodeService.findNodesToPushTo(); if (clients != null) { @@ -43,7 +43,7 @@ public void pushData() { } } - debug("Push request completed."); + info("Push request completed."); } class ParameterParser { @@ -134,11 +134,11 @@ private void pushToClient(Node remote) } } - private void debug(String s) + private void info(String s) { - if (logger.isDebugEnabled()) + if (logger.isInfoEnabled()) { - logger.debug(s); + logger.info(s); } } diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/transport/http/HttpTransportManager.java b/symmetric/src/main/java/org/jumpmind/symmetric/transport/http/HttpTransportManager.java index 1cfb7cc0a1..5db056ba88 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/transport/http/HttpTransportManager.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/transport/http/HttpTransportManager.java @@ -69,6 +69,7 @@ protected HttpURLConnection sendMessage(URL url, String data) conn.setRequestMethod("POST"); conn.setAllowUserInteraction(false); conn.setDoOutput(true); + conn.setConnectTimeout(10000); conn.setRequestProperty("Content-Length", Integer.toString(data .length())); writeMessage(conn.getOutputStream(), data); @@ -110,8 +111,8 @@ public IIncomingTransport getRegisterTransport(Node node) .getDatabaseVersion()); append(builder, WebConstants.SYMMETRIC_VERSION, node .getSymmetricVersion()); - - HttpURLConnection conn = sendMessage(new URL(builder.toString()), ""); + HttpURLConnection conn = (HttpURLConnection) new URL(builder.toString()).openConnection(); + conn.setRequestMethod("GET"); return new HttpIncomingTransport(conn); } diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/util/RandomTimeSlot.java b/symmetric/src/main/java/org/jumpmind/symmetric/util/RandomTimeSlot.java index d114be2b5b..34c8b477cb 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/util/RandomTimeSlot.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/util/RandomTimeSlot.java @@ -14,24 +14,28 @@ public class RandomTimeSlot { int maxValue = 1000; - public RandomTimeSlot() { + Random random; + + public RandomTimeSlot() { + random = new Random(); } - + public RandomTimeSlot(IRuntimeConfig config, int maxValue) { this.runtimeConfiguration = config; this.maxValue = maxValue; + random = new Random(runtimeConfiguration.getExternalId().hashCode()); } - + public void setMaxValue(int maxValue) { this.maxValue = maxValue; } public void setRuntimeConfiguration(IRuntimeConfig runtimeConfiguration) { this.runtimeConfiguration = runtimeConfiguration; + random = new Random(runtimeConfiguration.getExternalId().hashCode()); } public int getRandomValueSeededByDomainId() { - return new Random(runtimeConfiguration.getExternalId().hashCode()) - .nextInt(maxValue); + return random.nextInt(maxValue); } } diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/web/RegistrationServlet.java b/symmetric/src/main/java/org/jumpmind/symmetric/web/RegistrationServlet.java index 41aa4a8919..bccda05e57 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/web/RegistrationServlet.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/web/RegistrationServlet.java @@ -22,7 +22,7 @@ public class RegistrationServlet extends HttpServlet { protected static final Log logger = LogFactory.getLog(RegistrationServlet.class); @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); IRegistrationService service = (IRegistrationService) ctx.getBean(Constants.REGISTRATION_SERVICE);