Re: [Dev] [MB] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Pamod Sylvester
+1 that's a good point. We could define a function to normalize the slot
range through consolidating of all the remaining slots together.

On Thu, Mar 12, 2015 at 1:22 PM, Asitha Nanayakkara asi...@wso2.com wrote:

 Hi Pamod

 Querying the remaining slots and removing content directly is OK. As an
 improvement you can add a separate method in slot coordinator to get that
 message range of all the slots, to reduce cluster communication, and then
 do the necessary processing in the local node it self.

 Thanks,
 Asitha

 On Thu, Mar 12, 2015 at 11:56 AM, Pamod Sylvester pa...@wso2.com wrote:

 Hi All,

 During the subscription disconnection/deletion purge operation is being
 called on the the relevant non durable topic the subscription/s was bound
 to. During purge operation all existing data (if any) relevant to that
 topic will be removed.

 When using hector the removal is done through a range query following LOC,

 ListLong currentPage =
 HectorDataAccessHelper.getNumericColumnKeysOfRow
 (keyspace,
 CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
 lastProcessedID);

 Initially the relevant message ids are retrieved from MetaData CF and
 then removed from the MessageContent CF. Once more than 200,000 messages
 are sent since the range query queries the entire row of data belonging to
 a relevant topic, it results in the following,



 *Caused by:
 org.apache.cassandra.db.filter.TombstoneOverwhelmingException: nullat
 org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
 ~[apache-cassandra-2.1.2.jar:2.1.2]at
 org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
 ~[apache-cassandra-2.1.2.jar:2.1.2]*

 And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
 TimedOutException() *in the broker end,

 As solution,

 Since the idea of purging during disconnection is to clear out remaining
 data which have not being given out to its subscribers, we could query the
 slots which are still remaining and directly delete them from the
 MessageContentCF instead of querying them from meta data CF. Would there be
 any implication to this ? WDYT ?

 Thanks,
 Pamod

 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




 --
 *Asitha Nanayakkara*
 Software Engineer
 WSO2, Inc. http://wso2.com/
 Mob: + 94 77 85 30 682




-- 
*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] [MB] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Hasitha Amal De Silva
Hi Pamod,

+1 for the solution. as discussed, we can use a single service call to
fetch all slots from the coordinator for the given queue, and trigger
single message deletions (referring to OnflightMessageTracker and
SlotDeliveryWorker) . This will ensure that tombstones are not read when
purging in a subscription closed scenario.

However, we also need to think about triggering a queue purge from the UI,
at which point we may not have active subscriptions or slot references.

Thanks

On Thu, Mar 12, 2015 at 11:56 AM, Pamod Sylvester pa...@wso2.com wrote:

 Hi All,

 During the subscription disconnection/deletion purge operation is being
 called on the the relevant non durable topic the subscription/s was bound
 to. During purge operation all existing data (if any) relevant to that
 topic will be removed.

 When using hector the removal is done through a range query following LOC,

 ListLong currentPage =
 HectorDataAccessHelper.getNumericColumnKeysOfRow
 (keyspace,
 CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
 lastProcessedID);

 Initially the relevant message ids are retrieved from MetaData CF and then
 removed from the MessageContent CF. Once more than 200,000 messages are
 sent since the range query queries the entire row of data belonging to a
 relevant topic, it results in the following,



 *Caused by: org.apache.cassandra.db.filter.TombstoneOverwhelmingException:
 nullat
 org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
 ~[apache-cassandra-2.1.2.jar:2.1.2]at
 org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
 ~[apache-cassandra-2.1.2.jar:2.1.2]*

 And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
 TimedOutException() *in the broker end,

 As solution,

 Since the idea of purging during disconnection is to clear out remaining
 data which have not being given out to its subscribers, we could query the
 slots which are still remaining and directly delete them from the
 MessageContentCF instead of querying them from meta data CF. Would there be
 any implication to this ? WDYT ?

 Thanks,
 Pamod

 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




-- 
Cheers,

Hasitha Amal De Silva
 Software Engineer
Mobile : 0772037426
Blog: http://devnutshell.tumblr.com/
WSO2 Inc.: http://wso2.com ( lean.enterprise.middleware. )
___
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev


Re: [Dev] [MB] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Asitha Nanayakkara
Hi Pamod

Querying the remaining slots and removing content directly is OK. As an
improvement you can add a separate method in slot coordinator to get that
message range of all the slots, to reduce cluster communication, and then
do the necessary processing in the local node it self.

Thanks,
Asitha

On Thu, Mar 12, 2015 at 11:56 AM, Pamod Sylvester pa...@wso2.com wrote:

 Hi All,

 During the subscription disconnection/deletion purge operation is being
 called on the the relevant non durable topic the subscription/s was bound
 to. During purge operation all existing data (if any) relevant to that
 topic will be removed.

 When using hector the removal is done through a range query following LOC,

 ListLong currentPage =
 HectorDataAccessHelper.getNumericColumnKeysOfRow
 (keyspace,
 CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
 lastProcessedID);

 Initially the relevant message ids are retrieved from MetaData CF and then
 removed from the MessageContent CF. Once more than 200,000 messages are
 sent since the range query queries the entire row of data belonging to a
 relevant topic, it results in the following,



 *Caused by: org.apache.cassandra.db.filter.TombstoneOverwhelmingException:
 nullat
 org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
 ~[apache-cassandra-2.1.2.jar:2.1.2]at
 org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
 ~[apache-cassandra-2.1.2.jar:2.1.2]*

 And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
 TimedOutException() *in the broker end,

 As solution,

 Since the idea of purging during disconnection is to clear out remaining
 data which have not being given out to its subscribers, we could query the
 slots which are still remaining and directly delete them from the
 MessageContentCF instead of querying them from meta data CF. Would there be
 any implication to this ? WDYT ?

 Thanks,
 Pamod

 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




-- 
*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] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Hasitha Hiranya
Hi,

Idea was when last subscriber goes purge the messages without getting slots
involved because it need to happen lightweight and fast.

Thanks

On Thu, Mar 12, 2015 at 3:16 AM, Pamod Sylvester pa...@wso2.com wrote:

 +1 Agreed, also as you and Ramith mentioned deleting the content directly
 will not be possible with the current architecture, since matadata is
 partitioned based on the queue/topic but the message content is not and
 ranges could overlap between multiple topics/queues.

 Therefore, we could invoke the content deletion task for the moment.

  Also another question i have is as to why we cannot partition the message
 content the same way we partition the meta information ?

 Also, from the UI when purging we could still refer the unassigned slots i
 believe. That's my observation. Do correct me if i am wrong.

 Thanks,
 Pamod

 On Thu, Mar 12, 2015 at 1:29 PM, Hasitha Amal De Silva hasit...@wso2.com
 wrote:

 Hi Pamod,

 +1 for the solution. as discussed, we can use a single service call to
 fetch all slots from the coordinator for the given queue, and trigger
 single message deletions (referring to OnflightMessageTracker and
 SlotDeliveryWorker) . This will ensure that tombstones are not read when
 purging in a subscription closed scenario.

 However, we also need to think about triggering a queue purge from the
 UI, at which point we may not have active subscriptions or slot references.

 Thanks

 On Thu, Mar 12, 2015 at 11:56 AM, Pamod Sylvester pa...@wso2.com wrote:

 Hi All,

 During the subscription disconnection/deletion purge operation is being
 called on the the relevant non durable topic the subscription/s was bound
 to. During purge operation all existing data (if any) relevant to that
 topic will be removed.

 When using hector the removal is done through a range query following
 LOC,

 ListLong currentPage =
 HectorDataAccessHelper.getNumericColumnKeysOfRow
 (keyspace,
 CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
 lastProcessedID);

 Initially the relevant message ids are retrieved from MetaData CF and
 then removed from the MessageContent CF. Once more than 200,000 messages
 are sent since the range query queries the entire row of data belonging to
 a relevant topic, it results in the following,



 *Caused by:
 org.apache.cassandra.db.filter.TombstoneOverwhelmingException: nullat
 org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
 ~[apache-cassandra-2.1.2.jar:2.1.2]at
 org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
 ~[apache-cassandra-2.1.2.jar:2.1.2]*

 And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
 TimedOutException() *in the broker end,

 As solution,

 Since the idea of purging during disconnection is to clear out remaining
 data which have not being given out to its subscribers, we could query the
 slots which are still remaining and directly delete them from the
 MessageContentCF instead of querying them from meta data CF. Would there be
 any implication to this ? WDYT ?

 Thanks,
 Pamod

 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




 --
 Cheers,

 Hasitha Amal De Silva
  Software Engineer
 Mobile : 0772037426
 Blog: http://devnutshell.tumblr.com/
 WSO2 Inc.: http://wso2.com ( lean.enterprise.middleware. )




 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




-- 
*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


Re: [Dev] [MB] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Pamod Sylvester
Tombstones became the killer :(

The plan is to consolidate the unassigned slot ranges together and schedule
the content to be removed within that range only so that the query will not
grab tombstones.

Thanks,
Pamod

On Thu, Mar 12, 2015 at 2:11 PM, Hasitha Hiranya hasit...@wso2.com wrote:

 Hi,

 Idea was when last subscriber goes purge the messages without getting
 slots involved because it need to happen lightweight and fast.

 Thanks

 On Thu, Mar 12, 2015 at 3:16 AM, Pamod Sylvester pa...@wso2.com wrote:

 +1 Agreed, also as you and Ramith mentioned deleting the content directly
 will not be possible with the current architecture, since matadata is
 partitioned based on the queue/topic but the message content is not and
 ranges could overlap between multiple topics/queues.

 Therefore, we could invoke the content deletion task for the moment.

  Also another question i have is as to why we cannot partition the
 message content the same way we partition the meta information ?

 Also, from the UI when purging we could still refer the unassigned slots
 i believe. That's my observation. Do correct me if i am wrong.

 Thanks,
 Pamod

 On Thu, Mar 12, 2015 at 1:29 PM, Hasitha Amal De Silva hasit...@wso2.com
  wrote:

 Hi Pamod,

 +1 for the solution. as discussed, we can use a single service call to
 fetch all slots from the coordinator for the given queue, and trigger
 single message deletions (referring to OnflightMessageTracker and
 SlotDeliveryWorker) . This will ensure that tombstones are not read when
 purging in a subscription closed scenario.

 However, we also need to think about triggering a queue purge from the
 UI, at which point we may not have active subscriptions or slot references.

 Thanks

 On Thu, Mar 12, 2015 at 11:56 AM, Pamod Sylvester pa...@wso2.com
 wrote:

 Hi All,

 During the subscription disconnection/deletion purge operation is being
 called on the the relevant non durable topic the subscription/s was bound
 to. During purge operation all existing data (if any) relevant to that
 topic will be removed.

 When using hector the removal is done through a range query following
 LOC,

 ListLong currentPage =
 HectorDataAccessHelper.getNumericColumnKeysOfRow
 (keyspace,
 CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
 lastProcessedID);

 Initially the relevant message ids are retrieved from MetaData CF and
 then removed from the MessageContent CF. Once more than 200,000 messages
 are sent since the range query queries the entire row of data belonging to
 a relevant topic, it results in the following,



 *Caused by:
 org.apache.cassandra.db.filter.TombstoneOverwhelmingException: nullat
 org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
 ~[apache-cassandra-2.1.2.jar:2.1.2]at
 org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
 ~[apache-cassandra-2.1.2.jar:2.1.2]*

 And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
 TimedOutException() *in the broker end,

 As solution,

 Since the idea of purging during disconnection is to clear out
 remaining data which have not being given out to its subscribers, we could
 query the slots which are still remaining and directly delete them from the
 MessageContentCF instead of querying them from meta data CF. Would there be
 any implication to this ? WDYT ?

 Thanks,
 Pamod

 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




 --
 Cheers,

 Hasitha Amal De Silva
  Software Engineer
 Mobile : 0772037426
 Blog: http://devnutshell.tumblr.com/
 WSO2 Inc.: http://wso2.com ( lean.enterprise.middleware. )




 --
 *Pamod Sylvester *
  *Senior Software Engineer *
 Integration Technologies Team, WSO2 Inc.; http://wso2.com
 email: pa...@wso2.com cell: +94 77 7779495




 --
 *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


[Dev] [MB] TombstoneOverwhelmingException When Purge Operation is Triggered When Subscription Disconnection/Deletion

2015-03-12 Thread Pamod Sylvester
Hi All,

During the subscription disconnection/deletion purge operation is being
called on the the relevant non durable topic the subscription/s was bound
to. During purge operation all existing data (if any) relevant to that
topic will be removed.

When using hector the removal is done through a range query following LOC,

ListLong currentPage =
HectorDataAccessHelper.getNumericColumnKeysOfRow
(keyspace,
CassandraConstants.META_DATA_COLUMN_FAMILY, storageQueueName, pageSize,
lastProcessedID);

Initially the relevant message ids are retrieved from MetaData CF and then
removed from the MessageContent CF. Once more than 200,000 messages are
sent since the range query queries the entire row of data belonging to a
relevant topic, it results in the following,



*Caused by: org.apache.cassandra.db.filter.TombstoneOverwhelmingException:
nullat
org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:214)
~[apache-cassandra-2.1.2.jar:2.1.2]at
org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:107)
~[apache-cassandra-2.1.2.jar:2.1.2]*

And causes *me.prettyprint.hector.api.exceptions.HTimedOutException:
TimedOutException() *in the broker end,

As solution,

Since the idea of purging during disconnection is to clear out remaining
data which have not being given out to its subscribers, we could query the
slots which are still remaining and directly delete them from the
MessageContentCF instead of querying them from meta data CF. Would there be
any implication to this ? WDYT ?

Thanks,
Pamod

-- 
*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