[
https://issues.apache.org/jira/browse/CASSANDRA-1546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12918581#action_12918581
]
Kelvin Kakugawa commented on CASSANDRA-1546:
--------------------------------------------
I have no issues w/ a counter-specific API.
UUIDs are interesting enough that they're worth investigating.
The complexity of the context-based logic is to be space efficient. In
practice, cassandra nodes are typically I/O bound, not CPU bound. Beyond that,
a reasonable amount of effort was invested to optimize the implementation--a
modified quicksort and dynamic programming for set comparison. ntm, it
leverages byte arrays, instead of creating more objects for GC. So, I'm not
confident in the statement that #1546 is clearly faster than #1072. As a rule
of thumb, it's better to directly manage your memory usage, as opposed to
relying on the runtime's GC.
Supporting decrements, natively, is not complex. The original implementation
of #1072 against 0.6 re-used #580's vector clock tuples. So, it could track
the latest count (for a partition) by the timestamp of the tuple. The tuple
format was modified to remove the timestamp, because I wanted to cut down on
the size of the partitioned counter. However, in retrospect, it definitely is
useful for decrements. I wrote and deployed a modified version of #1072 that
widens the tuple, again, w/ a logical clock--# of operations computed, to
support decrements.
I'll look into refactoring the context-based logic for partitioned counters. I
have no problems supporting your UUID implementation as an optional code path.
> (Yet another) approach to counting
> ----------------------------------
>
> Key: CASSANDRA-1546
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1546
> Project: Cassandra
> Issue Type: New Feature
> Components: Core
> Reporter: Sylvain Lebresne
> Assignee: Sylvain Lebresne
> Fix For: 0.7.0
>
> Attachments: 0001-Remove-IClock-from-internals.patch,
> 0001-v2-Remove-IClock-from-internals.patch,
> 0001-v3-Remove-IClock-from-internals.patch, 0002-Counters.patch,
> 0002-v2-Counters.patch, 0002-v3-Counters.patch,
> 0003-Generated-thrift-files-changes.patch, 0003-v2-Thrift-changes.patch,
> 0003-v3-Thrift-changes.patch, marker_idea.txt
>
>
> This could be described as a mix between CASSANDRA-1072 without clocks and
> CASSANDRA-1421.
> More details in the comment below.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.