Valeriy Ak created CAMEL-16494:
----------------------------------
Summary: After VetoCamelContextStartException CamelContext
instance broken forever
Key: CAMEL-16494
URL: https://issues.apache.org/jira/browse/CAMEL-16494
Project: Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 3.7.3
Reporter: Valeriy Ak
After camel context failed started with VetoCamelContextStartException ones, it
never can be started again.
It happens becauce *vetoed* field checked in AbstractCamelContext.init()
method. This method throw RuntimeException (even if rethrowException = false,
because called fail(vetoed)) if vetoed is not null.
And *vetoed* field is cleaned in method doStartContext.
AbstractCamelContext code:
{code:java}
init(); //<--- this method throws RuntimeException when vetoed != null
try (AutoCloseable ignored = doLifecycleChange()) {
status = STARTING;
LOG.trace("Starting service: {}", this);
doStart(); //<-- this method sets vetoed == null{code}
Example for reproduce:
{code:java}
import org.apache.camel.CamelContext;
import org.apache.camel.VetoCamelContextStartException;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.support.LifecycleStrategySupport;
public class CamelContextVetoExceptionBug {
public static void main(String[] args) {
CamelContext context = new DefaultCamelContext();
boolean[] needThrow = new boolean[]{true};
context.addLifecycleStrategy(new LifecycleStrategySupport() {
@Override
public void onContextStarting(CamelContext context) throws
VetoCamelContextStartException {
if (needThrow[0]) {
needThrow[0] = false;
throw new VetoCamelContextStartException("Veto
onContextStarting", context, false);
}
}
});
context.start();
System.out.println("Start failed without rethrow: veto=" +
context.isVetoStarted());
try {
context.start();
} catch (Exception e) {
System.out.println("Exception: veto=" + context.isVetoStarted());
}
}
} {code}
Expected behavior:
* next context start does not thow RuntimeException
* next context start - started context
--
This message was sent by Atlassian Jira
(v8.3.4#803005)