Re: [Dev] [MB] How to clean up non-durable topic subscriptions if MB node killed in cluster setup

2015-08-23 Thread Hasitha Hiranya
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

2015-08-23 Thread Pumudu Ruhunage
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

2015-08-18 Thread Pumudu Ruhunage
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

2015-08-18 Thread Pumudu Ruhunage
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

2015-08-13 Thread Pumudu Ruhunage
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

2015-08-13 Thread Hemika Kodikara
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

2015-08-12 Thread Asitha Nanayakkara
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

2015-08-12 Thread Asanka Abeyweera
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

2015-08-12 Thread Asitha Nanayakkara
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

2015-08-12 Thread Asanka Abeyweera
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