[
https://issues.apache.org/jira/browse/AMQ-5441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14216633#comment-14216633
]
Curt Jutzi commented on AMQ-5441:
---------------------------------
also.. the Temp kahadb patch will need to have the additional interface added..
> PersistanceAdapter returns all Durable Subscriptions - this does not scale at
> all when durable subscribers are used
> --------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-5441
> URL: https://issues.apache.org/jira/browse/AMQ-5441
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.11.0
> Reporter: Curt Jutzi
> Attachments: Junit_PersistanceAdapterIssue_IntelCjutzi.java,
> apache-activemq_activemq-broker_Memory.patch,
> apache-activemq_activemq-broker_PersistenceAdapter.patch,
> apache-activemq_activemq-broker_PersistenceAdapterSupport.patch,
> apache-activemq_activemq-jdbc-store_DefaultJDBCAdapter.patch,
> apache-activemq_activemq-jdbc-store_JDBCAdapter.patch,
> apache-activemq_activemq-jdbc-store_Statements.patch,
> apache-activemq_activemq-store_KahaDBPersistenceAdapter.patch
>
> Original Estimate: 48h
> Remaining Estimate: 48h
>
> In the PersistenceAdapter for the broker, you'll see the call
> getDestinations() which is used (At least in MQTT) on each connect to see if
> the connecting client has any subscriptions. The issue is that
> getDesitinations() returns all durable subscriptions. We have an environment
> which has status / state which are retained, as well, each client supports 10
> durable subscriptions. With 10 K client connections this implies a dip into
> the DB which will return 80 bytes for each DESTINATION in the data base * 10K
> or 8 Meg on each connect. This needs to be filtered in the DB query since
> you are not looking for other clientids. All PersistenceAdaptors implemented
> have this issue.
> I have modified the all the DB adaptors to support a new method called
> getDestinations(String client_id). I have also modified the JDBC query to
> support a query which is specific to a given client-id and does not need to
> loop through all (thousands of ) connections filtering the client_id in the
> code..
> (see PersistenceAdapterSupport.listSubscriptions())..
>
> I've also attached a JUnit test which demos the issue using derbyDb..
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)