OK - changed under QPID-7561
<https://issues.apache.org/jira/browse/QPID-7561>

-- Rob

On 1 December 2016 at 17:04, Rob Godfrey <rob.j.godf...@gmail.com> wrote:

> Yeah - using the same mechanism as BDB would mean that you wouldn't be
> able to create a Derby vhost / vhostnode if the library wasn't present...
> We basically add a check on startup in the class to see if the necessary
> preconditions for creating an object of the type are met.  At that point
> you'll no longer see the types in the drop downs in the web console.  I'll
> raise a JIRA and make a change on trunk.
>
> -- Rob
>
> On 1 December 2016 at 16:46, Adel Boutros <adelbout...@live.com> wrote:
>
>> 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