[ https://issues.apache.org/jira/browse/CASSANDRA-2800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jon Hermes updated CASSANDRA-2800: ---------------------------------- Attachment: 2800.txt > OPP#describeOwnership reports incorrect ownership > ------------------------------------------------- > > Key: CASSANDRA-2800 > URL: https://issues.apache.org/jira/browse/CASSANDRA-2800 > Project: Cassandra > Issue Type: Bug > Affects Versions: 0.7.4 > Reporter: Jon Hermes > Assignee: Jon Hermes > Priority: Minor > Fix For: 0.7.7, 0.8.2 > > Attachments: 2800.txt > > > OPP#describeOwnership relies on StorageService#getSplits and counts the > received tokens as its basis of ownership. > When the number of result keys is less than the number of splits, the full > count is omitted (to save work?). However, we don't care if a split would end > up fractional in this case, we just need the full count. > The logic here is: > {code} > int splits = keycount * DatabaseDescriptor.getIndexInterval() / keysPerSplit; > if (keycount >= splits) { ... add count to result set } > {code} > We were passing in 1 key per split (since we just care about the count), but > splits=keycount*IndexInterval is guaranteed to be > keycount, so the result > set is not completely formed. > The better "unit keysPerSplit" to use is IndexInterval itself, which gives > splits=keycount*II/II=keycount, so the logic runs correctly. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira