You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Adel Boutros <Ad...@live.com> on 2016/12/01 15:21:53 UTC

[Qpid Java Broker] Remove Derby jar causes broker to crash when creating a VritualHost with Derby message store or config

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.loadDerbyDriver(DerbyUtils.java:65)
at org.apache.qpid.server.store.derby.DerbyConfigurationStore.openConfigurationStore(DerbyConfigurationStore.java:75)
at org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode.activate(AbstractStandardVirtualHostNode.java:84)
at org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode.doActivate(AbstractVirtualHostNode.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.qpid.server.model.AbstractConfiguredObject.attainState(AbstractConfiguredObject.java:1266)
at org.apache.qpid.server.model.AbstractConfiguredObject.attainState(AbstractConfiguredObject.java:1245)
at org.apache.qpid.server.model.AbstractConfiguredObject$8.onSuccess(AbstractConfiguredObject.java:864)
at org.apache.qpid.server.model.AbstractConfiguredObject$8.onSuccess(AbstractConfiguredObject.java:858)
at com.google.common.util.concurrent.Futures$6.run(Futures.java:1319)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
at com.google.common.util.concurrent.ExecutionList.add(ExecutionList.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.doAttainState(AbstractConfiguredObject.java:857)
at org.apache.qpid.server.model.AbstractConfiguredObject.access$300(AbstractConfiguredObject.java:78)
at org.apache.qpid.server.model.AbstractConfiguredObject$6.execute(AbstractConfiguredObject.java:756)
at org.apache.qpid.server.model.AbstractConfiguredObject$6.execute(AbstractConfiguredObject.java:719)
at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:521)
at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:514)
at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$TaskLoggingWrapper.execute(TaskExecutorImpl.java:270)
at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.submitWrappedTask(TaskExecutorImpl.java:154)
at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.submit(TaskExecutorImpl.java:142)
at org.apache.qpid.server.model.AbstractConfiguredObject.doOnConfigThread(AbstractConfiguredObject.java:513)
at org.apache.qpid.server.model.AbstractConfiguredObject.createAsync(AbstractConfiguredObject.java:718)
at org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory.createAsync(AbstractConfiguredObjectTypeFactory.java:76)
at org.apache.qpid.server.model.ConfiguredObjectFactoryImpl.createAsync(ConfiguredObjectFactoryImpl.java:125)
at org.apache.qpid.server.model.adapter.BrokerAdapter.createVirtualHostNodeAsync(BrokerAdapter.java:598)
at org.apache.qpid.server.model.adapter.BrokerAdapter.addChildAsync(BrokerAdapter.java:652)
at org.apache.qpid.server.model.AbstractConfiguredObject$18.execute(AbstractConfiguredObject.java:1876)
at org.apache.qpid.server.model.AbstractConfiguredObject$18.execute(AbstractConfiguredObject.java:1871)
at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:521)
at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:514)
at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$TaskLoggingWrapper.execute(TaskExecutorImpl.java:270)
at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$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.TaskExecutorImpl$CallableWrapper.call(TaskExecutorImpl.java:335)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.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.loadDerbyDriver(DerbyUtils.java:61)
... 46 more


Re: [Qpid Java Broker] Remove Derby jar causes broker to crash when creating a VritualHost with Derby message store or config

Posted by Rob Godfrey <ro...@gmail.com>.
OK - changed under QPID-7561
<https://issues.apache.org/jira/browse/QPID-7561>

-- Rob

On 1 December 2016 at 17:04, Rob Godfrey <ro...@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 <Ad...@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 <ro...@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 <Ad...@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
>> >
>> >
>>
>
>

Re: [Qpid Java Broker] Remove Derby jar causes broker to crash when creating a VritualHost with Derby message store or config

Posted by Rob Godfrey <ro...@gmail.com>.
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 <Ad...@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 <ro...@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 <Ad...@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
> >
> >
>

Re: [Qpid Java Broker] Remove Derby jar causes broker to crash when creating a VritualHost with Derby message store or config

Posted by Adel Boutros <Ad...@live.com>.
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 <ro...@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 <Ad...@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
>
>

Re: [Qpid Java Broker] Remove Derby jar causes broker to crash when creating a VritualHost with Derby message store or config

Posted by Rob Godfrey <ro...@gmail.com>.
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 <Ad...@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
>
>