You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Aleksey Yeschenko (JIRA)" <ji...@apache.org> on 2014/04/15 04:53:15 UTC

[jira] [Commented] (CASSANDRA-6134) More efficient BatchlogManager

    [ https://issues.apache.org/jira/browse/CASSANDRA-6134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13969167#comment-13969167 ] 

Aleksey Yeschenko commented on CASSANDRA-6134:
----------------------------------------------

[~m0nstermind] FYI, I pushed a 2.1-rebased version to https://github.com/iamaleksey/cassandra/commits/6134

There are at least a couple issues with it:
1. rateLimiter.acquire() call at https://github.com/iamaleksey/cassandra/commit/337368f14aa3546e9d8057c48ab8f5a32efe88c4#diff-642bb5d5ca328b50d59f2a550c94e5edR280 uses the size of the list instead of the mutation size
2. Using Verb.READ_REPAIR in https://github.com/iamaleksey/cassandra/commit/337368f14aa3546e9d8057c48ab8f5a32efe88c4#diff-642bb5d5ca328b50d59f2a550c94e5edR402 does not, in fact, stop C* from writing a hint on timeout

I haven't forgotten about the issue, but need to fix a few batchlog/HHOM bugs first :\

> More efficient BatchlogManager
> ------------------------------
>
>                 Key: CASSANDRA-6134
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6134
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Oleg Anastasyev
>            Assignee: Oleg Anastasyev
>            Priority: Minor
>         Attachments: 6134-async.txt, 6134-cleanup.txt, BatchlogManager.txt
>
>
> As we discussed earlier in CASSANDRA-6079 this is the new BatchManager.
> It stores batch records in 
> {code}
> CREATE TABLE batchlog (
>   id_partition int,
>   id timeuuid,
>   data blob,
>   PRIMARY KEY (id_partition, id)
> ) WITH COMPACT STORAGE AND
>   CLUSTERING ORDER BY (id DESC)
> {code}
> where id_partition is minute-since-epoch of id uuid. 
> So when it scans for batches to replay ot scans within a single partition for  a slice of ids since last processed date till now minus write timeout.
> So no full batchlog CF scan and lot of randrom reads are made on normal cycle. 
> Other improvements:
> 1. It runs every 1/2 of write timeout and replays all batches written within 0.9 * write timeout from now. This way we ensure, that batched updates will be replayed to th moment client times out from coordinator.
> 2. It submits all mutations from single batch in parallel (Like StorageProxy do). Old implementation played them one-by-one, so client can see half applied batches in CF for a long time (depending on size of batch).
> 3. It fixes a subtle racing bug with incorrect hint ttl calculation



--
This message was sent by Atlassian JIRA
(v6.2#6252)