Hello Rob,

Having the same behavior as BerkleyDB is enough for me right now.


I don't mind the broker not starting if a VirtualHostNode is missing jars. 
However, I don't like the fact that a management operation can make a running 
broker fail especially when you have a lot of messages being exchanged at the 
same moment.


Regards,

Adel

________________________________
From: Rob Godfrey <rob.j.godf...@gmail.com>
Sent: Thursday, December 1, 2016 5:08:15 PM
To: users@qpid.apache.org
Subject: Re: [Qpid Java Broker] Remove Derby jar causes broker to crash when 
creating a VritualHost with Derby message store or config

Just to be clear - the current behaviour of the broker when started with a
BDB VirtualHost*Node* and the BDB jar missing is for the broker to fail to
start.  A JSON vitualhostnode with a BDB virtualhost will allow the boker
to start up, but the virtualhostnode will be in the ERROR state.

It would be relatively easy to have the same sort of behaviour for the
Derby Virtual Host... It would be a bigger change if you were wanting the
broker to start up with VirtualHostNodes which depend on missing libraries.

Is this what you are looking for, or are you needing to have the broker
start up even with virtual host nodes defined which cannot be created (if
you are, I'm not sure there's actually an easy way to solve that)

Cheers,
Rob

On 1 December 2016 at 15:21, Adel Boutros <adelbout...@live.com> wrote:

> Hello,
>
>
> For legal issues, we are unable to ship Derby in our product. So to be
> able to use Qpid, I have removed the Derby jar and relaunched the broker
> which had a "Memory" virtual host.
>
>
> I tried to add a new VirtualHostNode/VirtualHost with config and message
> store "DERBY" and it crashed. I was expecting it to behave just the way it
> does for BerkleyDB when the jar is not present.
>
>
> Is it possible to fix this?
>
>
> Regards,
>
> Adel
>
>
> Full Stack in broker log
>
> ---------------------------------
>
>
> [Broker] BRK-1004 : Qpid Broker Ready
> ########################################################################
> #
> # Unhandled Exception org.apache.qpid.server.store.StoreException: Failed
> to load driver org.apache.derby.jdbc.EmbeddedDriver in Thread
> HttpManagement-HTTP-122
> #
> # Exiting
> #
> ########################################################################
> org.apache.qpid.server.store.StoreException: Failed to load driver
> org.apache.derby.jdbc.EmbeddedDriver
> at org.apache.qpid.server.store.derby.DerbyUtils.loadDerbyDrive
> r(DerbyUtils.java:65)
> at org.apache.qpid.server.store.derby.DerbyConfigurationStore.o
> penConfigurationStore(DerbyConfigurationStore.java:75)
> at org.apache.qpid.server.virtualhostnode.AbstractStandardVirtu
> alHostNode.activate(AbstractStandardVirtualHostNode.java:84)
> at org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNo
> de.doActivate(AbstractVirtualHostNode.java:160)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> ssorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> thodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.apache.qpid.server.model.AbstractConfiguredObject.attain
> State(AbstractConfiguredObject.java:1266)
> at org.apache.qpid.server.model.AbstractConfiguredObject.attain
> State(AbstractConfiguredObject.java:1245)
> at org.apache.qpid.server.model.AbstractConfiguredObject$8.onSu
> ccess(AbstractConfiguredObject.java:864)
> at org.apache.qpid.server.model.AbstractConfiguredObject$8.onSu
> ccess(AbstractConfiguredObject.java:858)
> at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
> at com.google.common.util.concurrent.MoreExecutors$DirectExecut
> or.execute(MoreExecutors.java:457)
> at com.google.common.util.concurrent.ExecutionList.executeListe
> ner(ExecutionList.java:156)
> at com.google.common.util.concurrent.ExecutionList.add(Executio
> nList.java:101)
> at com.google.common.util.concurrent.AbstractFuture.addListener
> (AbstractFuture.java:170)
> at com.google.common.util.concurrent.Futures.addCallback(
> Futures.java:1322)
> at com.google.common.util.concurrent.Futures.addCallback(
> Futures.java:1258)
> at org.apache.qpid.server.model.AbstractConfiguredObject.doAtta
> inState(AbstractConfiguredObject.java:857)
> at org.apache.qpid.server.model.AbstractConfiguredObject.access
> $300(AbstractConfiguredObject.java:78)
> at org.apache.qpid.server.model.AbstractConfiguredObject$6.exec
> ute(AbstractConfiguredObject.java:756)
> at org.apache.qpid.server.model.AbstractConfiguredObject$6.exec
> ute(AbstractConfiguredObject.java:719)
> at org.apache.qpid.server.model.AbstractConfiguredObject$2.exec
> ute(AbstractConfiguredObject.java:521)
> at org.apache.qpid.server.model.AbstractConfiguredObject$2.exec
> ute(AbstractConfiguredObject.java:514)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l$TaskLoggingWrapper.execute(TaskExecutorImpl.java:270)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l.submitWrappedTask(TaskExecutorImpl.java:154)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l.submit(TaskExecutorImpl.java:142)
> at org.apache.qpid.server.model.AbstractConfiguredObject.doOnCo
> nfigThread(AbstractConfiguredObject.java:513)
> at org.apache.qpid.server.model.AbstractConfiguredObject.create
> Async(AbstractConfiguredObject.java:718)
> at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFac
> tory.createAsync(AbstractConfiguredObjectTypeFactory.java:76)
> at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.cre
> ateAsync(ConfiguredObjectFactoryImpl.java:125)
> at org.apache.qpid.server.model.adapter.BrokerAdapter.createVir
> tualHostNodeAsync(BrokerAdapter.java:598)
> at org.apache.qpid.server.model.adapter.BrokerAdapter.addChildA
> sync(BrokerAdapter.java:652)
> at org.apache.qpid.server.model.AbstractConfiguredObject$18.exe
> cute(AbstractConfiguredObject.java:1876)
> at org.apache.qpid.server.model.AbstractConfiguredObject$18.exe
> cute(AbstractConfiguredObject.java:1871)
> at org.apache.qpid.server.model.AbstractConfiguredObject$2.exec
> ute(AbstractConfiguredObject.java:521)
> at org.apache.qpid.server.model.AbstractConfiguredObject$2.exec
> ute(AbstractConfiguredObject.java:514)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l$TaskLoggingWrapper.execute(TaskExecutorImpl.java:270)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l$CallableWrapper$1.run(TaskExecutorImpl.java:342)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:356)
> at org.apache.qpid.server.configuration.updater.TaskExecutorImp
> l$CallableWrapper.call(TaskExecutorImpl.java:335)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
> Executor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
> lExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.derby.jdbc.EmbeddedDriver
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:191)
> at org.apache.qpid.server.store.derby.DerbyUtils.loadDerbyDrive
> r(DerbyUtils.java:61)
> ... 46 more
>
>

Reply via email to