Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
At start up we can see a log [1] saying we are using both direct storing and asynchronous storing. Even when asynchronous storing is enabled. Reason for this log is we have used MessageStoreManager within Disruptor to call the MessageStore functionality. It's much better if we use the MessageStore itself within disruptor. Currently within the AsyncStoringManager we have used Disruptor and Disruptor uses DirectStoringManager to store messages [2]. I think it is much cleaner if we use the MessageStore within Disruptor rather than another MessageStoreManager for Disruptor as well. WDYT? [1] INFO {org.wso2.andes.kernel.storemanager.MessageStoreManagerFactory} - Message Storing strategy: direct message storing. INFO {org.wso2.andes.kernel.storemanager.MessageStoreManagerFactory} - Message Storing strategy: Asynchronous message storing. [2] https://github.com/wso2-dev/andes/blob/b97c175294e6a5f293662be101ef7bb2b7dd8547/modules/andes-core/broker/src/main/java/org/wso2/andes/kernel/storemanager/AsyncStoringManager.java On Sat, Oct 11, 2014 at 11:06 PM, Asitha Nanayakkara asi...@wso2.com wrote: On Sat, Oct 11, 2014 at 8:52 PM, Hasitha Hiranya hasit...@wso2.com wrote: On Sat, Oct 11, 2014 at 6:32 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, On Sat, Oct 11, 2014 at 2:50 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, Here are some more tasks we are planning to do along milestone releases of MB. 1. Both come as coodinator when in localhost (should consider port as well when slecting coodinator) 2. Throw necessary SQL exceptions in JDBC (handled by Asitha now I believe) When in clustered mode if in memory mode is used an exception is thrown and the message stores won't get initialized. And each method in the RDBMS store classes throws AndesException when an SQLException occur. AFIR you were missing stack Trace from JDBC driver. Maybe this is fixed now. Yes. That is fixed. 3. Need to catch exception (most generic ) and throw CassandaDataAccessException in CQLDataAccessHelper 4. Misleading log - in-memory message store initialized when configured with Cassandra This Log is due to the in memory message store that was there in MessagingEngine. We have removed it. With that change integrated to the pack this log and the initialisation of in memory message store won't happen. +1 5. Adjust packaging and put these as debug in log4j.propeties separated as kernel, amqp and mqtt log4j.logger.org.wso2.andes.server.cassandra.QueueDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.SlotDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.OnflightMessageTracker=DEBUG log4j.logger.org.wso2.andes.server.cluster.coordination.hazelcast=DEBUG We need to separate per message logs as trace logs? We did this in MB 2.2.0. 6. Make Onflight Message Tracker NOT AMQP specific. Thanks On Thu, Oct 2, 2014 at 11:13 AM, Sriskandarajah Suhothayan s...@wso2.com wrote: On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Devs, Here are some more tasks we are planning to do along milestone releases of MB. 1. Both come as coodinator when in localhost (should consider port as well when slecting coodinator) 2. Throw necessary SQL exceptions in JDBC (handled by Asitha now I believe) 3. Need to catch exception (most generic ) and throw CassandaDataAccessException in CQLDataAccessHelper 4. Misleading log - in-memory message store initialized when configured with Cassandra 5. Adjust packaging and put these as debug in log4j.propeties separated as kernel, amqp and mqtt log4j.logger.org.wso2.andes.server.cassandra.QueueDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.SlotDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.OnflightMessageTracker=DEBUG log4j.logger.org.wso2.andes.server.cluster.coordination.hazelcast=DEBUG We need to separate per message logs as trace logs? We did this in MB 2.2.0. 6. Make Onflight Message Tracker NOT AMQP specific. Thanks On Thu, Oct 2, 2014 at 11:13 AM, Sriskandarajah Suhothayan s...@wso2.com wrote: On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler need to revisit this class. What does this do?? It has threads etc that never stops Should remove all global queue related stuff from cluster manager should remove all zookeeper related things from whole project up to MB product from dependancy level moved all message count related stuff to Context store. Now, need to implement thsose for jdbc. deleteMessageMetadataFromQueue(queueName,removableMetadata) @MessageStore. Why queue name? We should get rid of it and implement. Thanks On Wed, Oct 1, 2014 at 9:25 AM, Darshana
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Hasitha, On Sat, Oct 11, 2014 at 2:50 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, Here are some more tasks we are planning to do along milestone releases of MB. 1. Both come as coodinator when in localhost (should consider port as well when slecting coodinator) 2. Throw necessary SQL exceptions in JDBC (handled by Asitha now I believe) When in clustered mode if in memory mode is used an exception is thrown and the message stores won't get initialized. And each method in the RDBMS store classes throws AndesException when an SQLException occur. 3. Need to catch exception (most generic ) and throw CassandaDataAccessException in CQLDataAccessHelper 4. Misleading log - in-memory message store initialized when configured with Cassandra This Log is due to the in memory message store that was there in MessagingEngine. We have removed it. With that change integrated to the pack this log and the initialisation of in memory message store won't happen. 5. Adjust packaging and put these as debug in log4j.propeties separated as kernel, amqp and mqtt log4j.logger.org.wso2.andes.server.cassandra.QueueDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.SlotDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.OnflightMessageTracker=DEBUG log4j.logger.org.wso2.andes.server.cluster.coordination.hazelcast=DEBUG We need to separate per message logs as trace logs? We did this in MB 2.2.0. 6. Make Onflight Message Tracker NOT AMQP specific. Thanks On Thu, Oct 2, 2014 at 11:13 AM, Sriskandarajah Suhothayan s...@wso2.com wrote: On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
On Sat, Oct 11, 2014 at 6:32 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, On Sat, Oct 11, 2014 at 2:50 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, Here are some more tasks we are planning to do along milestone releases of MB. 1. Both come as coodinator when in localhost (should consider port as well when slecting coodinator) 2. Throw necessary SQL exceptions in JDBC (handled by Asitha now I believe) When in clustered mode if in memory mode is used an exception is thrown and the message stores won't get initialized. And each method in the RDBMS store classes throws AndesException when an SQLException occur. AFIR you were missing stack Trace from JDBC driver. Maybe this is fixed now. 3. Need to catch exception (most generic ) and throw CassandaDataAccessException in CQLDataAccessHelper 4. Misleading log - in-memory message store initialized when configured with Cassandra This Log is due to the in memory message store that was there in MessagingEngine. We have removed it. With that change integrated to the pack this log and the initialisation of in memory message store won't happen. +1 5. Adjust packaging and put these as debug in log4j.propeties separated as kernel, amqp and mqtt log4j.logger.org.wso2.andes.server.cassandra.QueueDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.SlotDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.OnflightMessageTracker=DEBUG log4j.logger.org.wso2.andes.server.cluster.coordination.hazelcast=DEBUG We need to separate per message logs as trace logs? We did this in MB 2.2.0. 6. Make Onflight Message Tracker NOT AMQP specific. Thanks On Thu, Oct 2, 2014 at 11:13 AM, Sriskandarajah Suhothayan s...@wso2.com wrote: On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
On Sat, Oct 11, 2014 at 8:52 PM, Hasitha Hiranya hasit...@wso2.com wrote: On Sat, Oct 11, 2014 at 6:32 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, On Sat, Oct 11, 2014 at 2:50 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, Here are some more tasks we are planning to do along milestone releases of MB. 1. Both come as coodinator when in localhost (should consider port as well when slecting coodinator) 2. Throw necessary SQL exceptions in JDBC (handled by Asitha now I believe) When in clustered mode if in memory mode is used an exception is thrown and the message stores won't get initialized. And each method in the RDBMS store classes throws AndesException when an SQLException occur. AFIR you were missing stack Trace from JDBC driver. Maybe this is fixed now. Yes. That is fixed. 3. Need to catch exception (most generic ) and throw CassandaDataAccessException in CQLDataAccessHelper 4. Misleading log - in-memory message store initialized when configured with Cassandra This Log is due to the in memory message store that was there in MessagingEngine. We have removed it. With that change integrated to the pack this log and the initialisation of in memory message store won't happen. +1 5. Adjust packaging and put these as debug in log4j.propeties separated as kernel, amqp and mqtt log4j.logger.org.wso2.andes.server.cassandra.QueueDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.SlotDeliveryWorker=DEBUG log4j.logger.org.wso2.andes.server.cassandra.OnflightMessageTracker=DEBUG log4j.logger.org.wso2.andes.server.cluster.coordination.hazelcast=DEBUG We need to separate per message logs as trace logs? We did this in MB 2.2.0. 6. Make Onflight Message Tracker NOT AMQP specific. Thanks On Thu, Oct 2, 2014 at 11:13 AM, Sriskandarajah Suhothayan s...@wso2.com wrote: On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler need to revisit this class. What does this do?? It has threads etc that never stops Should remove all global queue related stuff from cluster manager should remove all zookeeper related things from whole project up to MB product from dependancy level moved all message count related stuff to Context store. Now, need to implement thsose for jdbc. deleteMessageMetadataFromQueue(queueName,removableMetadata) @MessageStore. Why queue name? We should get rid of it and implement. Thanks On Wed, Oct 1, 2014 at 9:25 AM, Darshana Akalanka Pagoda Arachchi darsha...@wso2.com wrote: Hi, Also I think we need to take a look at the CQL Database schema since for most of the column families including Meta Data column family and Message Content Column family we use the same schema. Because of this the message Id which is the primary key in Message Content column family has to be converted into String (which is Long) before saving. On Tue, Sep 30, 2014 at 10:56 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of the concerns is how to delete content safely without deleting content prior to all the subscribers, for the topic, successfully receive the message. I think we will have to discuss and relook at what is the best approach for this. Thanks On Tue, Sep 30, 2014 at 4:21 PM, Shammi Jayasinghe sha...@wso2.com wrote: Hi Hasitha, Could you please clarify what you mention my duplicating message metadata and content. Thanks Shammi On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com -- Best Regards, * Shammi Jayasinghe* Associate Tech Lead WSO2, Inc.; http://wso2.com, mobile: +94 71 4493085 -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Darshana Akalanka Pagoda Arachchi,* *Software Engineer* *078-4721791* ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler need to revisit this class. What does this do?? It has threads etc that never stops Should remove all global queue related stuff from cluster manager should remove all zookeeper related things from whole project up to MB product from dependancy level moved all message count related stuff to Context store. Now, need to implement thsose for jdbc. deleteMessageMetadataFromQueue(queueName,removableMetadata) @MessageStore. Why queue name? We should get rid of it and implement. Thanks On Wed, Oct 1, 2014 at 9:25 AM, Darshana Akalanka Pagoda Arachchi darsha...@wso2.com wrote: Hi, Also I think we need to take a look at the CQL Database schema since for most of the column families including Meta Data column family and Message Content Column family we use the same schema. Because of this the message Id which is the primary key in Message Content column family has to be converted into String (which is Long) before saving. On Tue, Sep 30, 2014 at 10:56 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of the concerns is how to delete content safely without deleting content prior to all the subscribers, for the topic, successfully receive the message. I think we will have to discuss and relook at what is the best approach for this. Thanks On Tue, Sep 30, 2014 at 4:21 PM, Shammi Jayasinghe sha...@wso2.com wrote: Hi Hasitha, Could you please clarify what you mention my duplicating message metadata and content. Thanks Shammi On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com*
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler need to revisit this class. What does this do?? It has threads etc that never stops Should remove all global queue related stuff from cluster manager should remove all zookeeper related things from whole project up to MB product from dependancy level moved all message count related stuff to Context store. Now, need to implement thsose for jdbc. deleteMessageMetadataFromQueue(queueName,removableMetadata) @MessageStore. Why queue name? We should get rid of it and implement. Thanks On Wed, Oct 1, 2014 at 9:25 AM, Darshana Akalanka Pagoda Arachchi darsha...@wso2.com wrote: Hi, Also I think we need to take a look at the CQL Database schema since for most of the column families including Meta Data column family and Message Content Column family we use the same schema. Because of this the message Id which is the primary key in Message Content column family has to be converted into String (which is Long) before saving. On Tue, Sep 30, 2014 at 10:56 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of the concerns is how to delete content safely without deleting content prior to all the subscribers, for the
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
On Thu, Oct 2, 2014 at 11:06 AM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Hasitha, Concerns regarding *deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove)* This method is used to delete meta data from a specific queue *queueName (Note: *queueName in actual meta data would be different*). *This methods' use case is to delete messages from a DLC. Note that there are methods to add meta data to DLC too. (parameter to give the specific queue to be stored to) *public void addMetaDataToQueue(final String queueName, AndesMessageMetadata metadata) throws AndesException;* *public void addMetadataToQueue(final String queueName, ListAndesMessageMetadata metadata) throws AndesException;* For the normal use case, to delete metadata there is no separate method. We use the deleteMessages() method (meta data and content is removed through this method). But if we are going to avoid content duplication for topics in future we will need to add a method to deleteMetadata as well (without specific queue name parameter) +1 Suho On Wed, Oct 1, 2014 at 8:53 PM, Pamod Sylvester pa...@wso2.com wrote: I've also got started on some re factoring of MQTT related logic we've implemented to fit in with the new changes. We also might want to further abstract out ack handling logic, since in MQTT the way acks are handled are quite different. So we need to address such polymorphic behaviours as well. for ex : - in AMQP when an ack arrives we purge the message, but in MQTT in QOS level 2 we wait for a couple of ack exchanges to consider the message being delivered. On Wed, Oct 1, 2014 at 7:13 PM, Hasitha Hiranya hasit...@wso2.com wrote: Hi, I am currently doing the changes suggested by Suho and the team 1. Introducing a Strategy Class for message store (async/direct/hybrid). - So far, I could make async strategy class done. 2. remove business logics and threads from message store and make it plain - done 3. remove ackReceived from store level - done 4. removed topic delivery worker - let us rewrite or merge to queue delivery worker 5. moved message counting from message store and moved to context store 6. prevented message store access from outside On the way I had to make modifications and improvements to the existing model. Also cleaned up Global queues whenever I met going thro the code when doing above change. There are still changes needs to be done. what to do when last subscriber goes for topic in mbeans how to get message count for topics in mbeans for subscriptions how to get pending message counts queue browserdelivery worker, need to rewrite getSortedMessages() ack received moved to messaging engine. Logic resides at messaging engine (tracking aspect) and message store manager (store aspect) reimplement topic delivery worker messageStore or message store manager is never given out of message engine. Do not call them directly. Always use MessagingEngine for message operations. public void deleteMessages method in message store has a logic. Should be removed. public void deleteMessageMetadataFromQueue(final String queueName,ListAndesRemovableMetadata messagesToRemove) why there is a queue name? AndesRemovableMetadata has queue name inside. QueueSubscriptionAcknowledgementHandler need to revisit this class. What does this do?? It has threads etc that never stops Should remove all global queue related stuff from cluster manager should remove all zookeeper related things from whole project up to MB product from dependancy level moved all message count related stuff to Context store. Now, need to implement thsose for jdbc. deleteMessageMetadataFromQueue(queueName,removableMetadata) @MessageStore. Why queue name? We should get rid of it and implement. Thanks On Wed, Oct 1, 2014 at 9:25 AM, Darshana Akalanka Pagoda Arachchi darsha...@wso2.com wrote: Hi, Also I think we need to take a look at the CQL Database schema since for most of the column families including Meta Data column family and Message Content Column family we use the same schema. Because of this the message Id which is the primary key in Message Content column family has to be converted into String (which is Long) before saving. On Tue, Sep 30, 2014 at 10:56 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Add to that Need to review the CQL message store to re adopt to the new architecture. Thanks, Pamod On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com -- *Pamod Sylvester * *Senior Software Engineer * Integration Technologies Team, WSO2 Inc.; http://wso2.com email: pa...@wso2.com cell: +94 77 7779495 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Hasitha, Could you please clarify what you mention my duplicating message metadata and content. Thanks Shammi On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com -- Best Regards, * Shammi Jayasinghe* Associate Tech Lead WSO2, Inc.; http://wso2.com, mobile: +94 71 4493085 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of the concerns is how to delete content safely without deleting content prior to all the subscribers, for the topic, successfully receive the message. I think we will have to discuss and relook at what is the best approach for this. Thanks On Tue, Sep 30, 2014 at 4:21 PM, Shammi Jayasinghe sha...@wso2.com wrote: Hi Hasitha, Could you please clarify what you mention my duplicating message metadata and content. Thanks Shammi On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com -- Best Regards, * Shammi Jayasinghe* Associate Tech Lead WSO2, Inc.; http://wso2.com, mobile: +94 71 4493085 -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi, Also I think we need to take a look at the CQL Database schema since for most of the column families including Meta Data column family and Message Content Column family we use the same schema. Because of this the message Id which is the primary key in Message Content column family has to be converted into String (which is Long) before saving. On Tue, Sep 30, 2014 at 10:56 PM, Asitha Nanayakkara asi...@wso2.com wrote: Hi Shammi, In the existing version of MB, for topics we duplicate the content and metadata. We thought of having reference counting to avoid duplication of message content. But implementing reference counting in Cassandra is unreliable (JDBC is ok). Also having different logic for different database types is inconsistent with what we wanted to achieve through the new storage model (with abstracted out MessageStore interface and storing strategies). One of the options would be to duplicate metadata with a reference to the same content (need a new field in metadata). One of the concerns is how to delete content safely without deleting content prior to all the subscribers, for the topic, successfully receive the message. I think we will have to discuss and relook at what is the best approach for this. Thanks On Tue, Sep 30, 2014 at 4:21 PM, Shammi Jayasinghe sha...@wso2.com wrote: Hi Hasitha, Could you please clarify what you mention my duplicating message metadata and content. Thanks Shammi On Tue, Sep 30, 2014 at 11:21 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com -- Best Regards, * Shammi Jayasinghe* Associate Tech Lead WSO2, Inc.; http://wso2.com, mobile: +94 71 4493085 -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Darshana Akalanka Pagoda Arachchi,* *Software Engineer* *078-4721791* ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
[Dev] WSO2 MB 3.0.0 - TODOs in store aspect
Hi Devs, For MB 3.0.0 we have identified following TODOs for the moment on the way to milestone 1. duplicate message metadata and content message store manager (all methods in message store to be moved to manager??) durable for in-memory depreciated methods in message store remove Cassandra server feature remove with Cassandra profile Ackreceived - should be removed from message store remove all logics from message store and make it plain why acks are sent to disruptor?? topic integration Thanks -- *Hasitha Abeykoon* Senior Software Engineer; WSO2, Inc.; http://wso2.com *cell:* *+94 719363063* *blog: **abeykoon.blogspot.com* http://abeykoon.blogspot.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev