Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi Pumudu, LocalSubscriptions are local to the node. You can deliver messages only to the Localsubscriptions. Clustersubscription is the object carrying basic info about subscriptions which does not have an actual channel associated with it. To solve the problem I have introduce a method to get a mock local subscription using the cluster subscription. Thanks On Tue, Aug 18, 2015 at 6:22 PM, Pumudu Ruhunage pum...@wso2.com wrote: Adding some info to first question. As I understood there are two types of andes subscriptions for cluster and local. When I try to call removeLocalSubscription() inside createDisconnectOrRemoveClusterSubscription() to remove subscriptions from local database i'm getting following exception[1]. This prevents removing redundant subscriptions from database during startup while initializing in cluster mode. Why do we need two type of andes subscriptions? can't we keep same subscription type for both cluster and local in MB? [1] Caused by: java.lang.ClassCastException: org.wso2.andes.subscription.BasicSubscription cannot be cast to org.wso2.andes.kernel.LocalSubscription at org.wso2.andes.subscription.SubscriptionStore.removeLocalSubscription(SubscriptionStore.java:645) at org.wso2.andes.subscription.SubscriptionStore.createDisconnectOrRemoveClusterSubscription(SubscriptionStore.java:487) at org.wso2.andes.kernel.AndesSubscriptionManager.updateClusterSubscriptionMaps(AndesSubscriptionManager.java:234) at org.wso2.andes.server.cluster.coordination.ClusterCoordinationHandler.handleClusterSubscriptionsChanged(ClusterCoordinationHandler.java:134) at org.wso2.andes.kernel.AndesSubscriptionManager.notifyClusterSubscriptionHasChanged(AndesSubscriptionManager.java:298) at org.wso2.andes.kernel.AndesSubscriptionManager.reloadSubscriptionsFromStorage(AndesSubscriptionManager.java:275) at org.wso2.andes.kernel.AndesRecoveryTask.reloadSubscriptions(AndesRecoveryTask.java:188) at org.wso2.andes.kernel.AndesRecoveryTask.recoverExchangesQueuesBindingsSubscriptions(AndesRecoveryTask.java:94) at org.wso2.andes.kernel.AndesKernelBoot.syncNodeWithClusterState(AndesKernelBoot.java:443) at org.wso2.andes.kernel.AndesKernelBoot.bootAndesKernel(AndesKernelBoot.java:116) at org.wso2.andes.server.Broker.startupImpl(Broker.java:290) Thanks, Pumudu On Tue, Aug 18, 2015 at 4:43 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, I faced two issues while fixing this. 1. There is a method for clear cluster subscriptions ('closeAllClusterSubscriptionsOfNode()' in 'andesSubscriptionManager') while initializing a cluster node. But it dosen't clean up database when executed. Is there a specific reason not to delete non-durable subscriptions from database when call this method? 2. Currently all subscriptions(durable/non-durable) are stored in MB_DURABLE_SUBSCRIPTION table. Is there a reason for this? Can't we change this table name to something meaningful if we continue to keep all subscriptions in same table? WDYT? Thanks, Pumudu On Thu, Aug 13, 2015 at 2:41 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, Thanks for the inputs. +1 for implementing both cases. will do both implementations. Regards, Pumudu On Thu, Aug 13, 2015 at 11:40 AM, Hemika Kodikara hem...@wso2.com wrote: Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi All, We have implemented it with following PR's[1][2] using newly introduced methods by HasithaH. Following subscription removing scenarios will be covered with the fix. 1. Remove non-durable subscriptions during startup and shuting down the server for it's node id. 2. Remove non-durable subscriptions when member removed for it's node id (by coordinator node). [1] https://github.com/wso2/andes/pull/288 [2] https://github.com/wso2/andes/pull/286 Thanks, Pumudu On Mon, Aug 24, 2015 at 9:40 AM, Hasitha Hiranya hasit...@wso2.com wrote: Hi Pumudu, LocalSubscriptions are local to the node. You can deliver messages only to the Localsubscriptions. Clustersubscription is the object carrying basic info about subscriptions which does not have an actual channel associated with it. To solve the problem I have introduce a method to get a mock local subscription using the cluster subscription. Thanks On Tue, Aug 18, 2015 at 6:22 PM, Pumudu Ruhunage pum...@wso2.com wrote: Adding some info to first question. As I understood there are two types of andes subscriptions for cluster and local. When I try to call removeLocalSubscription() inside createDisconnectOrRemoveClusterSubscription() to remove subscriptions from local database i'm getting following exception[1]. This prevents removing redundant subscriptions from database during startup while initializing in cluster mode. Why do we need two type of andes subscriptions? can't we keep same subscription type for both cluster and local in MB? [1] Caused by: java.lang.ClassCastException: org.wso2.andes.subscription.BasicSubscription cannot be cast to org.wso2.andes.kernel.LocalSubscription at org.wso2.andes.subscription.SubscriptionStore.removeLocalSubscription(SubscriptionStore.java:645) at org.wso2.andes.subscription.SubscriptionStore.createDisconnectOrRemoveClusterSubscription(SubscriptionStore.java:487) at org.wso2.andes.kernel.AndesSubscriptionManager.updateClusterSubscriptionMaps(AndesSubscriptionManager.java:234) at org.wso2.andes.server.cluster.coordination.ClusterCoordinationHandler.handleClusterSubscriptionsChanged(ClusterCoordinationHandler.java:134) at org.wso2.andes.kernel.AndesSubscriptionManager.notifyClusterSubscriptionHasChanged(AndesSubscriptionManager.java:298) at org.wso2.andes.kernel.AndesSubscriptionManager.reloadSubscriptionsFromStorage(AndesSubscriptionManager.java:275) at org.wso2.andes.kernel.AndesRecoveryTask.reloadSubscriptions(AndesRecoveryTask.java:188) at org.wso2.andes.kernel.AndesRecoveryTask.recoverExchangesQueuesBindingsSubscriptions(AndesRecoveryTask.java:94) at org.wso2.andes.kernel.AndesKernelBoot.syncNodeWithClusterState(AndesKernelBoot.java:443) at org.wso2.andes.kernel.AndesKernelBoot.bootAndesKernel(AndesKernelBoot.java:116) at org.wso2.andes.server.Broker.startupImpl(Broker.java:290) Thanks, Pumudu On Tue, Aug 18, 2015 at 4:43 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, I faced two issues while fixing this. 1. There is a method for clear cluster subscriptions ('closeAllClusterSubscriptionsOfNode()' in 'andesSubscriptionManager') while initializing a cluster node. But it dosen't clean up database when executed. Is there a specific reason not to delete non-durable subscriptions from database when call this method? 2. Currently all subscriptions(durable/non-durable) are stored in MB_DURABLE_SUBSCRIPTION table. Is there a reason for this? Can't we change this table name to something meaningful if we continue to keep all subscriptions in same table? WDYT? Thanks, Pumudu On Thu, Aug 13, 2015 at 2:41 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, Thanks for the inputs. +1 for implementing both cases. will do both implementations. Regards, Pumudu On Thu, Aug 13, 2015 at 11:40 AM, Hemika Kodikara hem...@wso2.com wrote: Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster.
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi All, I faced two issues while fixing this. 1. There is a method for clear cluster subscriptions ('closeAllClusterSubscriptionsOfNode()' in 'andesSubscriptionManager') while initializing a cluster node. But it dosen't clean up database when executed. Is there a specific reason not to delete non-durable subscriptions from database when call this method? 2. Currently all subscriptions(durable/non-durable) are stored in MB_DURABLE_SUBSCRIPTION table. Is there a reason for this? Can't we change this table name to something meaningful if we continue to keep all subscriptions in same table? WDYT? Thanks, Pumudu On Thu, Aug 13, 2015 at 2:41 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, Thanks for the inputs. +1 for implementing both cases. will do both implementations. Regards, Pumudu On Thu, Aug 13, 2015 at 11:40 AM, Hemika Kodikara hem...@wso2.com wrote: Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io -- *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 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Adding some info to first question. As I understood there are two types of andes subscriptions for cluster and local. When I try to call removeLocalSubscription() inside createDisconnectOrRemoveClusterSubscription() to remove subscriptions from local database i'm getting following exception[1]. This prevents removing redundant subscriptions from database during startup while initializing in cluster mode. Why do we need two type of andes subscriptions? can't we keep same subscription type for both cluster and local in MB? [1] Caused by: java.lang.ClassCastException: org.wso2.andes.subscription.BasicSubscription cannot be cast to org.wso2.andes.kernel.LocalSubscription at org.wso2.andes.subscription.SubscriptionStore.removeLocalSubscription(SubscriptionStore.java:645) at org.wso2.andes.subscription.SubscriptionStore.createDisconnectOrRemoveClusterSubscription(SubscriptionStore.java:487) at org.wso2.andes.kernel.AndesSubscriptionManager.updateClusterSubscriptionMaps(AndesSubscriptionManager.java:234) at org.wso2.andes.server.cluster.coordination.ClusterCoordinationHandler.handleClusterSubscriptionsChanged(ClusterCoordinationHandler.java:134) at org.wso2.andes.kernel.AndesSubscriptionManager.notifyClusterSubscriptionHasChanged(AndesSubscriptionManager.java:298) at org.wso2.andes.kernel.AndesSubscriptionManager.reloadSubscriptionsFromStorage(AndesSubscriptionManager.java:275) at org.wso2.andes.kernel.AndesRecoveryTask.reloadSubscriptions(AndesRecoveryTask.java:188) at org.wso2.andes.kernel.AndesRecoveryTask.recoverExchangesQueuesBindingsSubscriptions(AndesRecoveryTask.java:94) at org.wso2.andes.kernel.AndesKernelBoot.syncNodeWithClusterState(AndesKernelBoot.java:443) at org.wso2.andes.kernel.AndesKernelBoot.bootAndesKernel(AndesKernelBoot.java:116) at org.wso2.andes.server.Broker.startupImpl(Broker.java:290) Thanks, Pumudu On Tue, Aug 18, 2015 at 4:43 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, I faced two issues while fixing this. 1. There is a method for clear cluster subscriptions ('closeAllClusterSubscriptionsOfNode()' in 'andesSubscriptionManager') while initializing a cluster node. But it dosen't clean up database when executed. Is there a specific reason not to delete non-durable subscriptions from database when call this method? 2. Currently all subscriptions(durable/non-durable) are stored in MB_DURABLE_SUBSCRIPTION table. Is there a reason for this? Can't we change this table name to something meaningful if we continue to keep all subscriptions in same table? WDYT? Thanks, Pumudu On Thu, Aug 13, 2015 at 2:41 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi All, Thanks for the inputs. +1 for implementing both cases. will do both implementations. Regards, Pumudu On Thu, Aug 13, 2015 at 11:40 AM, Hemika Kodikara hem...@wso2.com wrote: Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi All, Thanks for the inputs. +1 for implementing both cases. will do both implementations. Regards, Pumudu On Thu, Aug 13, 2015 at 11:40 AM, Hemika Kodikara hem...@wso2.com wrote: Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io -- *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 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi All, We have already done a similar implementation for durable topics on member removed. +1 for Asanka's suggestion to remove non-topic subscriptions on both occasions. Regards, Hemika Hemika Kodikara Software Engineer WSO2 Inc. lean . enterprise . middleware http://wso2.com Mobile : +9477762 On Thu, Aug 13, 2015 at 11:09 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io -- *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 ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *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] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev
Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
On Thu, Aug 13, 2015 at 3:17 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Asitha, I don't think we can achieve this by only doing the cleanup at the coordinator selection point. We have to clean the topic subscriptions for a non-coordinator node when it leaves (In this case a new coordinator will not be elected). Oh! yes agreed! On Thu, Aug 13, 2015 at 5:04 AM, Asitha Nanayakkara asi...@wso2.com wrote: On Wed, Aug 12, 2015 at 10:53 PM, Asanka Abeyweera asank...@wso2.com wrote: Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. When a new coordinator is elected can't we let that newly elected coordinator do this ? Even at startup there is a coordinator election right? if that's the case we can cover both scenarios IMO? How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- *Asitha Nanayakkara* Software Engineer WSO2, Inc. http://wso2.com/ Mob: + 94 77 85 30 682 -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io -- *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] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup
Hi Pumudu, I think we have to do the clean up in both places. Case 1 is required when the only node in the cluster leaves and come back. Case 2 is required when a single node leaves in a multi node cluster. On Wed, Aug 12, 2015 at 5:38 PM, Pumudu Ruhunage pum...@wso2.com wrote: Hi, Currently if MB node got killed unexpectedly non-durable topic subscriptions bind to that node will remain in cluster. This can cause unexpected behaviors in cluster since that node has already removed. IMO these topic subscriptions can clean up in two methods. 1. During each MB node start up, remove all non-durable topic subscriptions for it's local node id. (This will ensure newly started node won't receive any non-durable topic messages related to previously killed MB node with same node id) I think we can do this in org.wso2.andes.kernel.AndesKernelBoot or in a similar class. May be we can do this similar to the way we do the slot recovery task. 2. Cluster coordinator should remove all non-durable topic subscriptions when a member left from cluster. (This can be a problem if coordinator node killed. If there's a method to get previous coordinator node id by newly elected coordinator this method can be implemented) For this case we can do the clean up in org.wso2.andes.server.cluster.ClusterManager#memberRemoved method after checking if the current node is the coordinator. This will work even if the coordinator node get killed. How should we do the clean up. WDYT? Regards, Pumudu -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev -- Asanka Abeyweera Software Engineer WSO2 Inc. Phone: +94 712228648 Blog: a5anka.github.io ___ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev