You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Chris Splinter (JIRA)" <ji...@apache.org> on 2016/09/28 23:59:21 UTC

[jira] [Updated] (CASSANDRA-12729) Cassandra-Stress: Use single seed in UUID generation

     [ https://issues.apache.org/jira/browse/CASSANDRA-12729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Splinter updated CASSANDRA-12729:
---------------------------------------
    Attachment: CASSANDRA-12729-trunk.patch

> Cassandra-Stress: Use single seed in UUID generation
> ----------------------------------------------------
>
>                 Key: CASSANDRA-12729
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12729
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>            Reporter: Chris Splinter
>            Priority: Minor
>         Attachments: CASSANDRA-12729-trunk.patch
>
>
> While testing the [new sequence distribution|https://issues.apache.org/jira/browse/CASSANDRA-12490] for the user module of cassandra-stress I noticed that half of the expected rows (848 / 1696) were produced when using a single uuid primary key.
> {code}
> table: player_info_by_uuid
> table_definition: |
>   CREATE TABLE player_info_by_uuid (
>     player_uuid uuid,
>     player_full_name text,
>     team_name text,
>     weight double,
>     height double,
>     position text,
>     PRIMARY KEY (player_uuid)
>   )
> columnspec:
>   - name: player_uuid
>     size: fixed(32) # no. of chars of UUID
>     population: seq(1..1696)  # 53 active players per team, 32 teams = 1696 players
> insert:
>   partitions: fixed(1)      # 1 partition per batch
>   batchtype: UNLOGGED       # use unlogged batches
>   select: fixed(1)/1     # no chance of skipping a row when generating inserts
> {code}
> The following debug output showed that we were over-incrementing the seed
> {code}
> SeedManager.next.index: 341824
> SeriesGenerator.Seed.next: 0
> SeriesGenerator.Seed.start: 1
> SeriesGenerator.Seed.totalCount: 20
> SeriesGenerator.Seed.next % totalCount: 0
> SeriesGenerator.Seed.start + (next % totalCount): 1
> PartitionOperation.ready.seed: org.apache.cassandra.stress.generate.Seed@1
> DistributionSequence.nextWithWrap.next: 0
> DistributionSequence.nextWithWrap.start: 1
> DistributionSequence.nextWithWrap.totalCount: 20
> DistributionSequence.nextWithWrap.next % totalCount: 0
> DistributionSequence.nextWithWrap.start + (next % totalCount): 1
> DistributionSequence.nextWithWrap.next: 1
> DistributionSequence.nextWithWrap.start: 1
> DistributionSequence.nextWithWrap.totalCount: 20
> DistributionSequence.nextWithWrap.next % totalCount: 1
> DistributionSequence.nextWithWrap.start + (next % totalCount): 2
> Generated uuid: 00000000-0000-0001-0000-000000000002
> {code}
> This patch fixes this issue by calling {{identityDistribution.next()}} once [instead of twice|https://github.com/apache/cassandra/blob/trunk/tools/stress/src/org/apache/cassandra/stress/generate/values/UUIDs.java/#L37] when generating UUID's



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)