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, >>> >>> List<Long> 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