You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Stephan Birkl (Jira)" <ji...@apache.org> on 2022/06/13 09:53:00 UTC

[jira] [Created] (AMQ-8629) MessageGroupHashBucket MBean returns data type not deserializable by jmx/visualvm

Stephan Birkl created AMQ-8629:
----------------------------------

             Summary: MessageGroupHashBucket MBean returns data type not deserializable by jmx/visualvm
                 Key: AMQ-8629
                 URL: https://issues.apache.org/jira/browse/AMQ-8629
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.16.5, 5.17.1, 5.18.0
            Reporter: Stephan Birkl
         Attachments: MessageGroupHashBucket.patch

We've switched our queues to MessageGroupHashBucket MessageGroupMap strategy.

One thing we've noticed is that when looking at the queues mbean in visualvm, it now shows correctly "bucket" in the MessageGroupType attribute, but the "MessageGroups" attribute is "unavailable" and when hovering the following exception is shown:

java.rmi.UnmarshalException: ... ClassNotFoundException: org.apache.activemq.memory.LRUMap

So basically visualvm cannot deserialize LRUMap, which of course makes sense. MBeans should not return app specific classes.

To reproduce it, you can configure the following policy entry:
{noformat}
                <policyEntry 
                    queue=">">
                    <messageGroupMapFactory>
                        <messageGroupHashBucketFactory/>
                    </messageGroupMapFactory>
                </policyEntry>{noformat}
I've checked the implementation of MessageGroupHashBucket.java and compared it to the default implementation CachedMessageGroupMap.java.

CachedMessageGroupMap also maintains a LRUMap but converts it in method getGroups() to a HashMap. getGroups() seems only to be used for the MBean as far as I can see.

Therefore I wrote a small patch to basically take over the implementation from CachedMessageGroupMap.java to MessageGroupHashBucket.java. Please find the patch attached.

I've successfully compiled and tested it locally. The MBean attribute is now correctly displayed and also from functionality point of view I did not see any negative side effect.

Is there any chance to get this patch reviewed and added to 5.16.x, which we currently use in production?



--
This message was sent by Atlassian Jira
(v8.20.7#820007)