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();