[QAARQ-26] Make monitoring commands compatible with publishing modules Created: 11/Dec/18 Updated: 11/Jul/22 Resolved: 12/Dec/18 |
|
| Status: | Closed |
| Project: | Queued Asynchronous Activation over RabbitMQ |
| Component/s: | monitoring |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Neutral |
| Reporter: | Andrew Warinner | Assignee: | Richard Gange |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Template: |
|
| Acceptance criteria: |
Empty
|
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
| Date of First Response: |
| Description |
|
info.magnolia.rabbitmq.activation.commands.SplittedActivationProducerCommand extends BaseActivationCommand which no longer exists in Magnolia 5.6 publishing. This causes ClassNotFoundExceptions when ConfirmationConsumer processes ACK messages: 2018-12-11 15:34:12,676 ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler: Consumer info.magnolia.rabbitmq.consumers.ConfirmationConsumer@38954dc9 (confirmConsumer) method handleDelivery for channel AMQChannel(amqp://magnolia@127.0.0.1:5672/,1) threw an exception for channel AMQChannel(amqp://magnolia@127.0.0.1:5672/,1)2018-12-11 15:34:12,676 ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler: Consumer info.magnolia.rabbitmq.consumers.ConfirmationConsumer@38954dc9 (confirmConsumer) method handleDelivery for channel AMQChannel(amqp://magnolia@127.0.0.1:5672/,1) threw an exception for channel AMQChannel(amqp://magnolia@127.0.0.1:5672/,1)java.lang.NoClassDefFoundError: info/magnolia/module/activation/commands/BaseActivationCommand at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_121] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_121] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_121] at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2277) ~[catalina.jar:8.5.12] at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811) ~[catalina.jar:8.5.12] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1254) ~[catalina.jar:8.5.12] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) ~[catalina.jar:8.5.12] at info.magnolia.rabbitmq.activation.io.StatusServiceImpl.updateActivationStatus(StatusServiceImpl.java:183) ~[magnolia-rabbitmq-activation-1.7.jar:?] at info.magnolia.rabbitmq.activation.io.StatusServiceImpl.notifyOnStatus(StatusServiceImpl.java:127) ~[magnolia-rabbitmq-activation-1.7.jar:?] at info.magnolia.rabbitmq.consumers.ConfirmationConsumer.processMessage(ConfirmationConsumer.java:91) ~[magnolia-rabbitmq-monitoring-1.7.jar:?] at info.magnolia.rabbitmq.activation.jobs.AckedMQConsumer.handleDelivery(AckedMQConsumer.java:74) ~[magnolia-rabbitmq-activation-1.7.jar:?] at com.rabbitmq.client.impl.ConsumerDispatcher$5.run(ConsumerDispatcher.java:149) [amqp-client-5.3.0.jar:5.3.0] at com.rabbitmq.client.impl.ConsumerWorkService$WorkPoolRunnable.run(ConsumerWorkService.java:104) [amqp-client-5.3.0.jar:5.3.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]Caused by: java.lang.ClassNotFoundException: info.magnolia.module.activation.commands.BaseActivationCommand at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) ~[catalina.jar:8.5.12] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) ~[catalina.jar:8.5.12] ... 16 more Also ACK messages are left in the ACK queue after the above exceptions. |
| Comments |
| Comment by Karel de Witte [ 12/Dec/18 ] |
|
This should have been fixed in latest release, maybe there are other commmands still depending on that or monitoring module tracts wrong dependencies.
|
| Comment by Richard Gange [ 12/Dec/18 ] |
|
Yeah, I think you need to update your configuration. Both sets of commands exist in the module. |
| Comment by Richard Gange [ 12/Dec/18 ] |
|
See: info.magnolia.rabbitmq.activation.commands.publishing.PublishingProducerCommand This replaces: info.magnolia.rabbitmq.activation.commands.SplittedActivationProducerCommand |
| Comment by Andrew Warinner [ 12/Dec/18 ] |
|
It's not a configuration problem: PublishingProducerCommand calls the StatusService implementation to update the activation status. The StatusService implementation calls a static method in SplittedActivationProducerCommand. Kaboom, ClassNotFoundException. |
| Comment by Andrew Warinner [ 12/Dec/18 ] |
|
cf: info.magnolia.rabbitmq.activation.io.StatusServiceImpl#updateActivationStatus: if(result.getNodes().getSize()>=minNbrOfPublics){ //update the activation status SplittedActivationProducerCommand.updateActivationStatus(node,user,isRecurse,node.getPrimaryNodeType().getName()); node.getSession().save(); } |
| Comment by Richard Gange [ 12/Dec/18 ] |
|
Yikes! Ok, I think we need to create some separate publishing modules. Wdyt? magnolia-rabbitmq-publication |
| Comment by Andrew Warinner [ 12/Dec/18 ] |
|
I don't think it's strictly necessary: it should be easy to refactor the RMQ commands to put the static method elsewhere. On the other hand, maybe it would be good to do a redivision of the modules to make supporting pre-5.6 publishing vs. post 5.6 publishing more convenient. AW |
| Comment by Richard Gange [ 12/Dec/18 ] |
|
It's getting confusing I think. I mean we have a package called info.magnolia.rabbitmq.activation.commands.publishing :notsureifgusta: |
| Comment by Richard Gange [ 12/Dec/18 ] |
|
I guess for now I will move the static method to the module class. |
| Comment by Richard Gange [ 13/Dec/18 ] |