cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jianing hu (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CASSANDRA-1591) get_range_slices always returns super columns that's been removed/restored, regardless of count value in slicerange
Date Thu, 07 Oct 2010 00:14:31 GMT

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

Jianing hu updated CASSANDRA-1591:
----------------------------------

    Description: 
I'm seeing cases where the count in slicerange predicate is not respected. This is only happening
for super columns. I'm running Cassandra 0.6.4 in a single node.

Steps to reproduce, using the Keyspace1.Super1 CF:
* insert three super columns, bar1 bar 2, and bar3, under the same key
* delete bar1
* insert bar1 again
* run a get_range_slices on Super1, with start=bar1, finish=bar3, and count=1
* I expected only bar1 to be returned, but both both bar1 and bar2 are returned. bar3 isn't,
though. so count is somewhat respected.

perl code to reproduce is attached
when I tried the same test on a standard CF it worked. only super CF seem to have this problem.

  was:
I'm seeing cases where the count in slicerange predicate is not respected. This is only happening
for super columns. I'm running Cassandra 0.6.4 in a single node.

Steps to reproduce, using the Keyspace1.Super1 CF:
* insert three super columns, bar1 bar 2, and bar3, under the same key
* delete bar1
* insert bar1 again
* run a get_range_slices on Super1, with start=bar1, finish=bar3, and count=1
* I expected only bar1 to be returned, but both both bar1 and bar2 are returned. bar3 isn't,
though. so count is somewhat respected.

perl code to reproduce follows:

#!/usr/bin/perl

use strict;
use Data::Dumper;
use Net::Cassandra;

my $key = 10;
my $cs = new Net::Cassandra( hostname => 'localhost' )->client;
my $ts = time;
$cs->batch_mutate(
    'Keyspace1',
    {
        $key => {
            Super1 => [
                new Net::Cassandra::Backend::Mutation({
                    column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
                        super_column => new Net::Cassandra::Backend::SuperColumn({
                            name => 'bar1',
                            columns => [
                                new Net::Cassandra::Backend::Column({
                                    name => 'foo1',
                                    value => 'foo1',
                                    timestamp => $ts++
                                })
                            ]
                        })
                    })
                }),
                new Net::Cassandra::Backend::Mutation({
                    column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
                        super_column => new Net::Cassandra::Backend::SuperColumn({
                            name => 'bar2',
                            columns => [
                                new Net::Cassandra::Backend::Column({
                                    name => 'foo1',
                                    value => 'foo1',
                                    timestamp => $ts++
                                })
                            ]
                        })
                    })
                }),
                new Net::Cassandra::Backend::Mutation({
                    column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
                        super_column => new Net::Cassandra::Backend::SuperColumn({
                            name => 'bar3',
                            columns => [
                                new Net::Cassandra::Backend::Column({
                                    name => 'foo1',
                                    value => 'foo1',
                                    timestamp => $ts++
                                })
                            ]
                        })
                    })
                })
            ]
        }
    },
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );

warn 'with fresh data';
# expect bar1
warn Dumper $cs->get_range_slices(
    'Keyspace1',
    new Net::Cassandra::Backend::ColumnParent({
        column_family => 'Super1',
    }),
    new Net::Cassandra::Backend::SlicePredicate({
        slice_range => new Net::Cassandra::Backend::SliceRange({
            start => 'bar1',
            finish => 'bar3',
            count => 1
        })
    }),
    new Net::Cassandra::Backend::KeyRange({
        start_key => $key,
        end_key => $key,
        count => 1
    }),
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );

$cs->remove(
    'Keyspace1',
    $key,
    new Net::Cassandra::Backend::ColumnPath({
        column_family => 'Super1',
        super_column => 'bar1'
    }),
    $ts++,
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );

'warn after delete';
# expect bar2
warn Dumper $cs->get_range_slices(
    'Keyspace1',
    new Net::Cassandra::Backend::ColumnParent({
        column_family => 'Super1',
    }),
    new Net::Cassandra::Backend::SlicePredicate({
        slice_range => new Net::Cassandra::Backend::SliceRange({
            start => 'bar1',
            finish => 'bar3',
            count => 1
        })
    }),
    new Net::Cassandra::Backend::KeyRange({
        start_key => $key,
        end_key => $key,
        count => 1
    }),
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );

$cs->batch_mutate(
    'Keyspace1',
    {
        $key => {
            Super1 => [
                new Net::Cassandra::Backend::Mutation({
                    column_or_supercolumn => new Net::Cassandra::Backend::ColumnOrSuperColumn({
                        super_column => new Net::Cassandra::Backend::SuperColumn({
                            name => 'bar1',
                            columns => [
                                new Net::Cassandra::Backend::Column({
                                    name => 'foo1',
                                    value => 'foo1',
                                    timestamp => $ts++
                                })
                            ]
                        })
                    })
                }),
            ]
        }
    },
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );

warn 'after restore data';
# expect bar1, but get both bar1 and bar2, not bar3, though. so count is somewhat respected.
warn Dumper $cs->get_range_slices(
    'Keyspace1',
    new Net::Cassandra::Backend::ColumnParent({
        column_family => 'Super1',
    }),
    new Net::Cassandra::Backend::SlicePredicate({
        slice_range => new Net::Cassandra::Backend::SliceRange({
            start => 'bar1',
            finish => 'bar3',
            count => 1
        })
    }),
    new Net::Cassandra::Backend::KeyRange({
        start_key => $key,
        end_key => $key,
        count => 1
    }),
    Net::Cassandra::Backend::ConsistencyLevel::ONE
  );




> get_range_slices always returns super columns that's been removed/restored, regardless
of count value in slicerange
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1591
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1591
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.6.4
>         Environment: CentOS 5.4, single Cassandra node 
>            Reporter: Jianing hu
>         Attachments: test.pl
>
>
> I'm seeing cases where the count in slicerange predicate is not respected. This is only
happening for super columns. I'm running Cassandra 0.6.4 in a single node.
> Steps to reproduce, using the Keyspace1.Super1 CF:
> * insert three super columns, bar1 bar 2, and bar3, under the same key
> * delete bar1
> * insert bar1 again
> * run a get_range_slices on Super1, with start=bar1, finish=bar3, and count=1
> * I expected only bar1 to be returned, but both both bar1 and bar2 are returned. bar3
isn't, though. so count is somewhat respected.
> perl code to reproduce is attached
> when I tried the same test on a standard CF it worked. only super CF seem to have this
problem.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message