[
https://issues.apache.org/jira/browse/CASSANDRA-4803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Piotr Kołaczkowski updated CASSANDRA-4803:
------------------------------------------
Attachment: 0006-Code-cleanup-refactoring-in-CFRR.-Fixed-bug-with-mis.patch
0005-Fixed-handling-of-start_key-end_token-in-get_range_s.patch
0004-Better-token-range-wrap-around-handling-in-CFIF-CFRR.patch
0003-Fixed-get_paged_slice-memtable-and-sstable-column-it.patch
0002-Fixed-bugs-in-describe_splits.-CFRR-uses-row-counts-.patch
0001-Wide-row-iterator-counts-rows-not-columns.patch
I attach a list of patches affecting operation of CFRR:
# Fix for obvious counting bug in wide row iterator that was counting columns
instead of rows.
# Several fixes in describe_splits:
- fixed non-uniform splitting - caused by integer math roundoff errors
- fixed insane behaviour when number of splits was higher than number of key
samples
- added estimated size of the split to the result, and make use of it in CFIF
# This is a patch for broken get_paged_slice; addressed in a separate ticket,
but I had to include it in order to test my code
# Fix for creating excessively small splits (and wrong progress reporting) due
to range wrap around.
# get_range_slices allows for (start_key, end_token) exactly the same as
get_paged_slice
# I tried to de-spaghettize CFRR code a little. This also fixes some bug that
accidentally slipped in with previous patches.
> CFRR progress broken for wide row iterators
> -------------------------------------------
>
> Key: CASSANDRA-4803
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4803
> Project: Cassandra
> Issue Type: Bug
> Affects Versions: 1.1.5
> Reporter: Piotr Kołaczkowski
> Assignee: Piotr Kołaczkowski
> Attachments: 0001-Wide-row-iterator-counts-rows-not-columns.patch,
> 0002-Fixed-bugs-in-describe_splits.-CFRR-uses-row-counts-.patch,
> 0003-Fixed-get_paged_slice-memtable-and-sstable-column-it.patch,
> 0004-Better-token-range-wrap-around-handling-in-CFIF-CFRR.patch,
> 0005-Fixed-handling-of-start_key-end_token-in-get_range_s.patch,
> 0006-Code-cleanup-refactoring-in-CFRR.-Fixed-bug-with-mis.patch
>
>
> {code}
> public float getProgress()
> {
> // TODO this is totally broken for wide rows
> // the progress is likely to be reported slightly off the actual but
> close enough
> float progress = ((float) iter.rowsRead() / totalRowCount);
> return progress > 1.0F ? 1.0F : progress;
> }
> {code}
> The problem is iter.rowsRead() does not return the number of rows read from
> the wide row iterator, but returns number of *columns* (every row is counted
> multiple times).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira