You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/07/12 14:07:38 UTC

camel git commit: CAMEL-11537: undertown consumer : consumer silently fails to start if manually started after a failure

Repository: camel
Updated Branches:
  refs/heads/master 8f7b5e366 -> fb0ab0e96


CAMEL-11537: undertown consumer : consumer silently fails to start if manually started after a failure


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fb0ab0e9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fb0ab0e9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fb0ab0e9

Branch: refs/heads/master
Commit: fb0ab0e961985806d327746683997c8acd2c5dbc
Parents: 8f7b5e3
Author: lburgazzoli <lb...@gmail.com>
Authored: Wed Jul 12 16:07:12 2017 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Wed Jul 12 16:07:12 2017 +0200

----------------------------------------------------------------------
 .../component/undertow/DefaultUndertowHost.java  | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fb0ab0e9/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHost.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHost.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHost.java
index 88ef8a1..89447ef 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHost.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHost.java
@@ -80,7 +80,24 @@ public class DefaultUndertowHost implements UndertowHost {
 
             undertow = builder.setHandler(rootHandler).build();
             LOG.info("Starting Undertow server on {}://{}:{}", key.getSslContext() != null ? "https" : "http", key.getHost(), key.getPort());
-            undertow.start();
+
+            try {
+                // If there is an exception while starting up, Undertow wraps it
+                // as RuntimeException which leaves the consumer in an inconsistent
+                // state as a subsequent start if the route (i.e. manually) won't
+                // start the Undertow instance as undertow is not null.
+                undertow.start();
+            } catch (RuntimeException e) {
+                LOG.warn("Failed to start Undertow server on {}://{}:{}, reason: {}", key.getSslContext() != null ? "https" : "http", key.getHost(), key.getPort(), e.getMessage());
+
+                // Cleanup any resource that may have been created during start
+                // and reset the instance so a subsequent start will trigger the
+                // initialization again.
+                undertow.stop();
+                undertow = null;
+
+                throw e;
+            }
         }
 
         String path = registrationInfo.getUri().getPath();