You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Teodor Sigaev (JIRA)" <ji...@apache.org> on 2009/09/25 15:30:16 UTC

[jira] Created: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Null pointer exception in doIndexing(ColumnIndexer.java:142)
------------------------------------------------------------

                 Key: CASSANDRA-458
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.4
         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
            Reporter: Teodor Sigaev


INFO - Saved Token not found. Using 17570558338530880605478324248305304996
INFO - Cassandra starting up...
INFO - Standard1 has reached its threshold; switching in a fresh Memtable
INFO - Enqueuing flush of Memtable(Standard1)@15830327
INFO - Sorting Memtable(Standard1)@15830327
INFO - Writing Memtable(Standard1)@15830327
INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
INFO - Standard1 has reached its threshold; switching in a fresh Memtable
INFO - Enqueuing flush of Memtable(Standard1)@22655307
INFO - Sorting Memtable(Standard1)@22655307
INFO - Writing Memtable(Standard1)@22655307
ERROR - Error in executor futuretask
java.util.concurrent.ExecutionException: java.lang.AssertionError
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
        at java.util.concurrent.FutureTask.get(FutureTask.java:83)
        at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
eExceptions(DebuggableThreadPoolExecutor.java:95)
        at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
cute(DebuggableThreadPoolExecutor.java:82)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:887)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:907)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.AssertionError
        at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
07)
        at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
)
        at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
olumnFamilySerializer.java:78)
        at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
2)
        at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
ava:934)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
1)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:885)
        ... 2 more
INFO - Standard1 has reached its threshold; switching in a fresh Memtable
INFO - Enqueuing flush of Memtable(Standard1)@14600171
INFO - Sorting Memtable(Standard1)@14600171
INFO - Writing Memtable(Standard1)@14600171
INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 

How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
#!/usr/local/bin/perl
use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
use strict;

use Cassandra;

use Thrift::Socket;
use Thrift::BinaryProtocol;
use Thrift::FramedTransport;
use Thrift::BufferedTransport;

use Data::Dumper;
use Time::HiRes qw( gettimeofday tv_interval );
use Getopt::Std;
my %opt;
getopts('iu:t:rn:', \%opt);

my $socket = Thrift::Socket->new('localhost', 9160);
   $socket->setSendTimeout(1000);
   $socket->setRecvTimeout(5000);
my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
my $protocol = Thrift::BinaryProtocol->new($transport);
my $client = Cassandra::CassandraClient->new($protocol);

$transport->open();


eval {
    my $id=0;
    for(;;) {
        $id++;
        my $PID = sprintf("%040lld", int(1000000 * rand()));
        $client->batch_insert(
            'Keyspace1',
            $PID,
            {
                'Standard1' => _makeColumnList ({
                    map {
                        $_=>'0'x(int(1 + 100 * rand()))
                    } (0..int(1+10*rand()))
                })
            },
            Cassandra::ConsistencyLevel::ONE
        );
 
        $client->remove(
            'Keyspace1',
            $PID,
            Cassandra::ColumnPath->new({
                column_family=>'Standard1',
            }),
            time(),
            Cassandra::ConsistencyLevel::ONE
        );
        print "$id\n" if ($id%100 == 0);
    }
};
 
die Dumper($@) if ($@);
 
$transport->close();
sub _makeColumnList($$) {
    my ($row) = @_;
 
    my @cfmap;
 
    foreach my $k (keys %$row) {
        push @cfmap, Cassandra::ColumnOrSuperColumn->new({
            column=>Cassandra::Column->new({
                name=>$k,
                value=>$row->{$k},
                timestamp=>time(),
            })
        });
    }
    die if $#cfmap < 0;
    return \@cfmap;
}



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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759552#action_12759552 ] 

Jonathan Ellis commented on CASSANDRA-458:
------------------------------------------

Sorry, I'm not very familiar with perl.  Any ideas how to solve this?

$ perl test.pl
Can't locate Bit/Vector.pm in @INC


> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Updated: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Teodor Sigaev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Teodor Sigaev updated CASSANDRA-458:
------------------------------------

    Attachment: test.pl

Script to reproduce a problem

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759569#action_12759569 ] 

Jonathan Ellis commented on CASSANDRA-458:
------------------------------------------

ok, reproduces for me.  thanks!

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759673#action_12759673 ] 

Jonathan Ellis commented on CASSANDRA-458:
------------------------------------------

03
    columns may be empty if the only pre-flush op was a CF-level remove op.  fix, with test.

02
    r/m unused byte-tracking code

01
    r/m unnecessary SortedFlushable class.  Keeping a 2nd reference to the Flushable in question,
    when it is only used to pass back to that Flushable for the write phase, was unnecessary & confusing.

Patch 03 is the bug fix against 0.4 and 0.5.  Can you verify that this fixes the problem for you?

Patches 02 and 01 are just for 0.5.

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759559#action_12759559 ] 

Eric Evans commented on CASSANDRA-458:
--------------------------------------

aptitude install libbit-vector-perl

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759560#action_12759560 ] 

Jonathan Ellis commented on CASSANDRA-458:
------------------------------------------

ok.  i have 3 copies running.  they are each past 10000.  how long should this take?

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Updated: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-458:
-------------------------------------

    Attachment: 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt
                0002-r-m-unused-byte-tracking-code.txt
                0001-CASSANDRA-458.txt

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12760022#action_12760022 ] 

Hudson commented on CASSANDRA-458:
----------------------------------

Integrated in Cassandra #210 (See [http://hudson.zones.apache.org/hudson/job/Cassandra/210/])
    r/m unused byte-tracking code
patch by jbellis; tested for  by Teodor Sigaev
r/m unnecessary SortedFlushable class.  Keeping a 2nd reference to the Flushable in question,
when it is only used to pass back to that Flushable for the write phase, was unnecessary & confusing.
patch by jbellis; tested for  by Teodor Sigaev


> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>            Assignee: Jonathan Ellis
>             Fix For: 0.4, 0.5
>
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Assigned: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis reassigned CASSANDRA-458:
----------------------------------------

    Assignee: Jonathan Ellis

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>            Assignee: Jonathan Ellis
>             Fix For: 0.4, 0.5
>
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Teodor Sigaev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759858#action_12759858 ] 

Teodor Sigaev commented on CASSANDRA-458:
-----------------------------------------

After full night run all is good. But I saw discussion named "commit logs are not deleted" and yesterday I updated svn to include http://svn.apache.org/viewvc?view=rev&revision=819004 and rebuilded cassandra with  0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt patch
And I  face to the same issue with commitlog directory: files never deleted and its modification time is not in the past:
% ls -l /spool/cassandra/commitlog 
/spool/cassandra/commitlog:
total 4460240
-rw-r--r--  1 teodor  wheel  134217855 Sep 26 09:20 CommitLog-1253912758033.log
-rw-r--r--  1 teodor  wheel  134218092 Sep 26 09:20 CommitLog-1253913622766.log
-rw-r--r--  1 teodor  wheel  134217873 Sep 26 09:20 CommitLog-1253914489217.log
-rw-r--r--  1 teodor  wheel  134217828 Sep 26 09:20 CommitLog-1253915364409.log
-rw-r--r--  1 teodor  wheel  134218028 Sep 26 09:20 CommitLog-1253916234925.log
-rw-r--r--  1 teodor  wheel  134218470 Sep 26 09:20 CommitLog-1253917113214.log
-rw-r--r--  1 teodor  wheel  134218152 Sep 26 09:20 CommitLog-1253917968814.log
-rw-r--r--  1 teodor  wheel  134217926 Sep 26 09:20 CommitLog-1253918815999.log
-rw-r--r--  1 teodor  wheel  134218135 Sep 26 09:20 CommitLog-1253919704092.log
-rw-r--r--  1 teodor  wheel  134218195 Sep 26 09:20 CommitLog-1253920594414.log
-rw-r--r--  1 teodor  wheel  134218081 Sep 26 09:20 CommitLog-1253921493770.log
-rw-r--r--  1 teodor  wheel  134218658 Sep 26 09:20 CommitLog-1253922402945.log
-rw-r--r--  1 teodor  wheel  134217814 Sep 26 09:20 CommitLog-1253923245407.log
-rw-r--r--  1 teodor  wheel  134218227 Sep 26 09:20 CommitLog-1253924129426.log
-rw-r--r--  1 teodor  wheel  134218131 Sep 26 09:20 CommitLog-1253925014538.log
-rw-r--r--  1 teodor  wheel  134218027 Sep 26 09:20 CommitLog-1253925890662.log
-rw-r--r--  1 teodor  wheel  134218069 Sep 26 09:20 CommitLog-1253926743631.log
-rw-r--r--  1 teodor  wheel  134218421 Sep 26 09:20 CommitLog-1253927613273.log
-rw-r--r--  1 teodor  wheel  134218410 Sep 26 09:20 CommitLog-1253928473213.log
-rw-r--r--  1 teodor  wheel  134217909 Sep 26 09:20 CommitLog-1253929324973.log
-rw-r--r--  1 teodor  wheel  134217928 Sep 26 09:20 CommitLog-1253930275986.log
-rw-r--r--  1 teodor  wheel  134217996 Sep 26 09:20 CommitLog-1253931167174.log
-rw-r--r--  1 teodor  wheel  134217760 Sep 26 09:20 CommitLog-1253932029445.log
-rw-r--r--  1 teodor  wheel  134218328 Sep 26 09:20 CommitLog-1253932891947.log
-rw-r--r--  1 teodor  wheel  134217793 Sep 26 09:20 CommitLog-1253933740244.log
-rw-r--r--  1 teodor  wheel  134217834 Sep 26 09:20 CommitLog-1253934614337.log
-rw-r--r--  1 teodor  wheel  134217758 Sep 26 09:20 CommitLog-1253935459196.log
-rw-r--r--  1 teodor  wheel  134217875 Sep 26 09:20 CommitLog-1253936347082.log
-rw-r--r--  1 teodor  wheel  134218323 Sep 26 09:20 CommitLog-1253937268917.log
-rw-r--r--  1 teodor  wheel  134217908 Sep 26 09:20 CommitLog-1253938116400.log
-rw-r--r--  1 teodor  wheel  134218158 Sep 26 09:20 CommitLog-1253938991211.log
-rw-r--r--  1 teodor  wheel  134217778 Sep 26 09:20 CommitLog-1253939833974.log
-rw-r--r--  1 teodor  wheel  134217822 Sep 26 09:20 CommitLog-1253940711231.log
-rw-r--r--  1 teodor  wheel  134218030 Sep 26 09:20 CommitLog-1253941558463.log
-rw-r--r--  1 teodor  wheel     524288 Sep 26 09:20 CommitLog-1253942415880.log

I saw discussion named "commit logs are not deleted" and yesterday I updated svn to  revision 819092 and rebuild cassandra with  	0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt patch

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>            Assignee: Jonathan Ellis
>             Fix For: 0.4, 0.5
>
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Teodor Sigaev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759695#action_12759695 ] 

Teodor Sigaev commented on CASSANDRA-458:
-----------------------------------------

Thank you a lot, it's working for me. Although patch looks too obvious and simple :)

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: 0001-CASSANDRA-458.txt, 0002-r-m-unused-byte-tracking-code.txt, 0003-columns-may-be-empty-if-the-only-pre-flush-op-was-a-CF.txt, test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Teodor Sigaev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759564#action_12759564 ] 

Teodor Sigaev commented on CASSANDRA-458:
-----------------------------------------

Several minutes on my notebook, near 20000-50000 records usually.

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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


[jira] Commented: (CASSANDRA-458) Null pointer exception in doIndexing(ColumnIndexer.java:142)

Posted by "Teodor Sigaev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759558#action_12759558 ] 

Teodor Sigaev commented on CASSANDRA-458:
-----------------------------------------

>From root:
# perl -MCPAN -e shell 
and then
cpan[1]> install Bit::Vector

or use your  packet manager. BTW, Bit::Vector is a prerequisite of thrift

> Null pointer exception in doIndexing(ColumnIndexer.java:142)
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-458
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>         Environment: FreeBSD 7.2, diablo-jdk-1.6.0.07.02_5, snapshot cassandra-0.4.0-final at 24/09/2009 
>            Reporter: Teodor Sigaev
>         Attachments: test.pl
>
>
> INFO - Saved Token not found. Using 17570558338530880605478324248305304996
> INFO - Cassandra starting up...
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@15830327
> INFO - Sorting Memtable(Standard1)@15830327
> INFO - Writing Memtable(Standard1)@15830327
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-1-Data.db
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@22655307
> INFO - Sorting Memtable(Standard1)@22655307
> INFO - Writing Memtable(Standard1)@22655307
> ERROR - Error in executor futuretask
> java.util.concurrent.ExecutionException: java.lang.AssertionError
>         at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>         at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logFutur
> eExceptions(DebuggableThreadPoolExecutor.java:95)
>         at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.afterExe
> cute(DebuggableThreadPoolExecutor.java:82)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:887)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.AssertionError
>         at org.apache.cassandra.db.ColumnIndexer.doIndexing(ColumnIndexer.java:1
> 07)
>         at org.apache.cassandra.db.ColumnIndexer.serialize(ColumnIndexer.java:62
> )
>         at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(C
> olumnFamilySerializer.java:78)
>         at org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:22
> 2)
>         at org.apache.cassandra.db.ColumnFamilyStore$2$1.run(ColumnFamilyStore.j
> ava:934)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44
> 1)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
>         ... 2 more
> INFO - Standard1 has reached its threshold; switching in a fresh Memtable
> INFO - Enqueuing flush of Memtable(Standard1)@14600171
> INFO - Sorting Memtable(Standard1)@14600171
> INFO - Writing Memtable(Standard1)@14600171
> INFO - Completed flushing /spool/cassandra/data/Keyspace1/Standard1-3-Data.db 
> How to reproduce: Run perl script pointed below, three at once.  In short, script just inserts a row and immediately removes it.
> #!/usr/local/bin/perl
> use lib qw(/usr/local/cassandra/interface/gen-perl/Cassandra /usr/local/cassandra/interface/gen-perl);
> use strict;
> use Cassandra;
> use Thrift::Socket;
> use Thrift::BinaryProtocol;
> use Thrift::FramedTransport;
> use Thrift::BufferedTransport;
> use Data::Dumper;
> use Time::HiRes qw( gettimeofday tv_interval );
> use Getopt::Std;
> my %opt;
> getopts('iu:t:rn:', \%opt);
> my $socket = Thrift::Socket->new('localhost', 9160);
>    $socket->setSendTimeout(1000);
>    $socket->setRecvTimeout(5000);
> my $transport =  Thrift::BufferedTransport->new($socket, 1024, 1024);
> my $protocol = Thrift::BinaryProtocol->new($transport);
> my $client = Cassandra::CassandraClient->new($protocol);
> $transport->open();
> eval {
>     my $id=0;
>     for(;;) {
>         $id++;
>         my $PID = sprintf("%040lld", int(1000000 * rand()));
>         $client->batch_insert(
>             'Keyspace1',
>             $PID,
>             {
>                 'Standard1' => _makeColumnList ({
>                     map {
>                         $_=>'0'x(int(1 + 100 * rand()))
>                     } (0..int(1+10*rand()))
>                 })
>             },
>             Cassandra::ConsistencyLevel::ONE
>         );
>  
>         $client->remove(
>             'Keyspace1',
>             $PID,
>             Cassandra::ColumnPath->new({
>                 column_family=>'Standard1',
>             }),
>             time(),
>             Cassandra::ConsistencyLevel::ONE
>         );
>         print "$id\n" if ($id%100 == 0);
>     }
> };
>  
> die Dumper($@) if ($@);
>  
> $transport->close();
> sub _makeColumnList($$) {
>     my ($row) = @_;
>  
>     my @cfmap;
>  
>     foreach my $k (keys %$row) {
>         push @cfmap, Cassandra::ColumnOrSuperColumn->new({
>             column=>Cassandra::Column->new({
>                 name=>$k,
>                 value=>$row->{$k},
>                 timestamp=>time(),
>             })
>         });
>     }
>     die if $#cfmap < 0;
>     return \@cfmap;
> }

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