Repository: camel
Updated Branches:
  refs/heads/camel-2.19.x 7494e48ff -> 8dfda87c2


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/8dfda87c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8dfda87c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8dfda87c

Branch: refs/heads/camel-2.19.x
Commit: 8dfda87c2ad55f3422f311ef68f4a289326abd9b
Parents: 7494e48
Author: lburgazzoli <lburgazz...@gmail.com>
Authored: Wed Jul 12 16:07:12 2017 +0200
Committer: lburgazzoli <lburgazz...@gmail.com>
Committed: Thu Jul 13 07:06:49 2017 +0200

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


http://git-wip-us.apache.org/repos/asf/camel/blob/8dfda87c/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();

Reply via email to