From 007b6c3a85d6e7495c578dc08787aa98130be1cd Mon Sep 17 00:00:00 2001 From: Jan-Helge Bergesen Date: Fri, 18 Mar 2016 14:28:11 +0100 Subject: [PATCH] Slight bug in robustness --- .../camel/consul/leader/ConsulFacadeBean.java | 15 ++++++++------- .../camel/consul/leader/ConsulLeaderElector.java | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/jhberges/camel/consul/leader/ConsulFacadeBean.java b/src/main/java/jhberges/camel/consul/leader/ConsulFacadeBean.java index 7797c46..8ff652a 100644 --- a/src/main/java/jhberges/camel/consul/leader/ConsulFacadeBean.java +++ b/src/main/java/jhberges/camel/consul/leader/ConsulFacadeBean.java @@ -41,16 +41,17 @@ private static String leaderKeyInfo(final String baseUrl, final String serviceNa private boolean renewSession(final Executor executor, final String url, final String serviceName) throws IOException { assert sessionKey.isPresent(); - String _sessionKey = sessionKey.get(); + final String _sessionKey = sessionKey.get(); final String uri = String.format("%s/v1/session/renew/%s", url, _sessionKey); logger.debug("PUT {}", uri); final Response response = executor.execute(Request.Put(uri)); boolean renewedOk = response.returnResponse().getStatusLine().getStatusCode() == 200; - + logger.debug("Session {} renewed={}", _sessionKey, renewedOk); if (!renewedOk) { logger.debug("Attempting to re-establish session for serviceName={}", serviceName); destroySession(url, _sessionKey); + sessionKey = Optional.empty(); sessionKey = initSessionKey(serviceName); renewedOk = sessionKey.isPresent(); } @@ -95,8 +96,8 @@ private static Optional unpackSessionKey(final HttpEntity entity) { private int retryPeriod; private double backOffMultiplier; - public ConsulFacadeBean(final String consulUrl, final Optional username, final Optional password, - int ttlInSeconds, int lockDelayInSeconds, boolean allowIslandMode, int createSessionTries, int retryPeriod, double backOffMultiplier) + public ConsulFacadeBean(final String consulUrl, final Optional username, final Optional password, + final int ttlInSeconds, final int lockDelayInSeconds, final boolean allowIslandMode, final int createSessionTries, final int retryPeriod, final double backOffMultiplier) throws MalformedURLException { this(consulUrl, username, password, Executor.newInstance()); this.ttlInSeconds = ttlInSeconds; @@ -198,8 +199,8 @@ public void destroySession(final String consulUrl, final String sessionKey) { } - public Optional initSessionKey(String serviceName) { - + public Optional initSessionKey(final String serviceName) { + if (!sessionKey.isPresent()) { sessionKey = createSession( serviceName, ttlInSeconds, lockDelayInSeconds, @@ -246,7 +247,7 @@ public Optional pollConsul(final String serviceName) { logger.debug("PUT {}", uri); final Response response = executor.execute(Request.Put(uri)); final Optional result = Optional.ofNullable(Boolean.valueOf(response.returnContent().asString())); - logger.debug("pollConsul - Result: {}", result); + logger.debug("pollConsul - session={} service={} result={}", sessionKey.get(), serviceName, result); return result; } } else { diff --git a/src/main/java/jhberges/camel/consul/leader/ConsulLeaderElector.java b/src/main/java/jhberges/camel/consul/leader/ConsulLeaderElector.java index 8b5a5d0..4918890 100755 --- a/src/main/java/jhberges/camel/consul/leader/ConsulLeaderElector.java +++ b/src/main/java/jhberges/camel/consul/leader/ConsulLeaderElector.java @@ -36,7 +36,7 @@ protected ConsulLeaderElector( this.camelContext = camelContext; this.producerTemplate = producerTemplate; this.allowIslandMode = allowIslandMode; - Optional sessionKey = consulFacade.initSessionKey(serviceName); + final Optional sessionKey = consulFacade.initSessionKey(serviceName); if (!sessionKey.isPresent() && !allowIslandMode) { logger.error("Island mode disabled -- terminating abruptly!"); TERMINATION_CALLBACK.run(); @@ -53,7 +53,7 @@ public void onContextStop(final CamelContext context) { super.onContextStop(context); try { consulFacade.close(); - } catch (IOException e) { + } catch (final IOException e) { logger.debug("Exception while closing facade: {}", e.getMessage()); } } @@ -61,7 +61,7 @@ public void onContextStop(final CamelContext context) { @Override public void run() { final Optional isLeader = consulFacade.pollConsul(serviceName); - logger.debug("Poll result isLeader={} allowIslandMode={}", isLeader, allowIslandMode); + logger.debug("Poll result serviceName={} isLeader={} allowIslandMode={}", serviceName, isLeader, allowIslandMode); try { if (isLeader.orElse(allowIslandMode)) { // I.e if explicitly leader, or poll // failed.