You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Oleg Mürk <ol...@gmail.com> on 2010/03/24 15:28:49 UTC

NullPointerException in DatabaseDescriptor.getComparator

Hello,

I am having the following problem with Cassandra. When I first start
Cassandra, it works fine and I insert some data, but when I kill cassandra
and then start it again, it starts throwing NullPointerException (into
log4j). When I restart Cassandra once more, it doesn't throw the exception
(usually), but when I query for previously inserted data, it is gone.

I am using out-of-the box Cassandra 0.5.1 on a single node (Java 6 / OS X
10.5.8). My schema is as follows:
------------------------------------------------
    <Keyspace Name="zclosure">
      <KeysCachedFraction>0.01</KeysCachedFraction>
      <ColumnFamily CompareWith="UTF8Type" Name="url-item"/>
      <ColumnFamily CompareWith="UTF8Type" Name="url-item-headers"/>
    </Keyspace>
------------------------------------------------
and the exception log is below. Any ideas?

Thank You,
Oleg Mürk
-----------------------------------------------
.......
INFO - Log replay complete
INFO - Saved Token found: 93658780503831948900522797887764765383
INFO - Starting up server gossip
DEBUG - Starting to listen on localhost/127.0.0.1
DEBUG - Binding thrift service to localhost/127.0.0.1:9160
INFO - Cassandra starting up...
DEBUG - Disseminating load info ...
DEBUG - get_count
DEBUG - get_slice
DEBUG - strongread reading data for SliceFromReadCommand(table='zclosure',
key='http://paulgraham.com/kate.html',
column_parent='QueryPath(columnFamilyName='url-item',
superColumnName='null', col
umnName='null')', start='', finish='', reversed=false, count=2147483647)
from 29@localhost/127.0.0.1
ERROR - Error in ThreadPoolExecutor
java.lang.NullPointerException
        at
org.apache.cassandra.config.DatabaseDescriptor.getComparator(DatabaseDescriptor.java:914)
        at
org.apache.cassandra.io.SSTableReader.getColumnComparator(SSTableReader.java:414)
        at
org.apache.cassandra.db.filter.SSTableSliceIterator.<init>(SSTableSliceIterator.java:54)
        at
org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:63)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamilyInternal(ColumnFamilyStore.java:1245)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1203)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1172)
        at org.apache.cassandra.db.Table.getRow(Table.java:415)
        at
org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)
        at
org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:79)
        at
org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:38)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:637)
ERROR - Fatal exception in thread Thread[ROW-READ-STAGE:1,5,main]
java.lang.NullPointerException
        at
org.apache.cassandra.config.DatabaseDescriptor.getComparator(DatabaseDescriptor.java:914)
        at
org.apache.cassandra.io.SSTableReader.getColumnComparator(SSTableReader.java:414)
        at
org.apache.cassandra.db.filter.SSTableSliceIterator.<init>(SSTableSliceIterator.java:54)
        at
org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:63)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamilyInternal(ColumnFamilyStore.java:1245)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1203)
        at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1172)
        at org.apache.cassandra.db.Table.getRow(Table.java:415)
        at
org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)
        at
org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:79)
        at
org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:38)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:637)

Re: NullPointerException in DatabaseDescriptor.getComparator

Posted by Oleg Mürk <ol...@gmail.com>.
Thanks! This has solved the problem!

On Wed, Mar 24, 2010 at 5:50 PM, gabriele renzi <rf...@gmail.com> wrote:

> On Wed, Mar 24, 2010 at 3:36 PM, Oleg Mürk <ol...@gmail.com> wrote:
> > Hi Jonathan,
> >
> > On Wed, Mar 24, 2010 at 4:32 PM, Jonathan Ellis <jb...@gmail.com>
> wrote:
> >>
> >> probably 0.5.1 is allowing an invalid query and erroring out when it
> >> actually runs it.
> >
> > I am pretty sure that the same query works OK when I initially start
> > Cassandra.
> > The problems occur after restarting.
>
>
> this seems the error addressed by CASSANDRA-915 , as I was saying in
> comments to CASSANDRA-914, cassandra manages column family with names
> the first time it's started but fails later (I guess when a new file
> was already written and it is trying to reopen it)
>
>
> Try making the CFs UrlItem and UrlItemHeaders and it should go away.
>
> --
> blog en: http://www.riffraff.info
> blog it: http://riffraff.blogsome.com
>

Re: NullPointerException in DatabaseDescriptor.getComparator

Posted by Jonathan Ellis <jb...@gmail.com>.
Ah, you're right.

So it is a validation problem that 0.6 catches, just not the one I
thought at first. :)

On Wed, Mar 24, 2010 at 10:50 AM, gabriele renzi <rf...@gmail.com> wrote:
> On Wed, Mar 24, 2010 at 3:36 PM, Oleg Mürk <ol...@gmail.com> wrote:
>> Hi Jonathan,
>>
>> On Wed, Mar 24, 2010 at 4:32 PM, Jonathan Ellis <jb...@gmail.com> wrote:
>>>
>>> probably 0.5.1 is allowing an invalid query and erroring out when it
>>> actually runs it.
>>
>> I am pretty sure that the same query works OK when I initially start
>> Cassandra.
>> The problems occur after restarting.
>
>
> this seems the error addressed by CASSANDRA-915 , as I was saying in
> comments to CASSANDRA-914, cassandra manages column family with names
> the first time it's started but fails later (I guess when a new file
> was already written and it is trying to reopen it)
>
>
> Try making the CFs UrlItem and UrlItemHeaders and it should go away.
>
> --
> blog en: http://www.riffraff.info
> blog it: http://riffraff.blogsome.com
>

Re: NullPointerException in DatabaseDescriptor.getComparator

Posted by gabriele renzi <rf...@gmail.com>.
On Wed, Mar 24, 2010 at 3:36 PM, Oleg Mürk <ol...@gmail.com> wrote:
> Hi Jonathan,
>
> On Wed, Mar 24, 2010 at 4:32 PM, Jonathan Ellis <jb...@gmail.com> wrote:
>>
>> probably 0.5.1 is allowing an invalid query and erroring out when it
>> actually runs it.
>
> I am pretty sure that the same query works OK when I initially start
> Cassandra.
> The problems occur after restarting.


this seems the error addressed by CASSANDRA-915 , as I was saying in
comments to CASSANDRA-914, cassandra manages column family with names
the first time it's started but fails later (I guess when a new file
was already written and it is trying to reopen it)


Try making the CFs UrlItem and UrlItemHeaders and it should go away.

-- 
blog en: http://www.riffraff.info
blog it: http://riffraff.blogsome.com

Re: NullPointerException in DatabaseDescriptor.getComparator

Posted by Oleg Mürk <ol...@gmail.com>.
Hi Jonathan,

On Wed, Mar 24, 2010 at 4:32 PM, Jonathan Ellis <jb...@gmail.com> wrote:

> probably 0.5.1 is allowing an invalid query and erroring out when it
> actually runs it.


I am pretty sure that the same query works OK when I initially start
Cassandra.
The problems occur after restarting.

Oleg

Re: NullPointerException in DatabaseDescriptor.getComparator

Posted by Jonathan Ellis <jb...@gmail.com>.
probably 0.5.1 is allowing an invalid query and erroring out when it
actually runs it.  0.6 beta3 should catch the problem earlier.

On Wed, Mar 24, 2010 at 9:28 AM, Oleg Mürk <ol...@gmail.com> wrote:
> Hello,
> I am having the following problem with Cassandra. When I first start
> Cassandra, it works fine and I insert some data, but when I kill cassandra
> and then start it again, it starts throwing NullPointerException (into
> log4j). When I restart Cassandra once more, it doesn't throw the exception
> (usually), but when I query for previously inserted data, it is gone.
> I am using out-of-the box Cassandra 0.5.1 on a single node (Java 6 / OS X
> 10.5.8). My schema is as follows:
> ------------------------------------------------
>     <Keyspace Name="zclosure">
>       <KeysCachedFraction>0.01</KeysCachedFraction>
>       <ColumnFamily CompareWith="UTF8Type" Name="url-item"/>
>       <ColumnFamily CompareWith="UTF8Type" Name="url-item-headers"/>
>     </Keyspace>
> ------------------------------------------------
> and the exception log is below. Any ideas?
> Thank You,
> Oleg Mürk
> -----------------------------------------------
> .......
> INFO - Log replay complete
> INFO - Saved Token found: 93658780503831948900522797887764765383
> INFO - Starting up server gossip
> DEBUG - Starting to listen on localhost/127.0.0.1
> DEBUG - Binding thrift service to localhost/127.0.0.1:9160
> INFO - Cassandra starting up...
> DEBUG - Disseminating load info ...
> DEBUG - get_count
> DEBUG - get_slice
> DEBUG - strongread reading data for SliceFromReadCommand(table='zclosure',
> key='http://paulgraham.com/kate.html',
> column_parent='QueryPath(columnFamilyName='url-item',
> superColumnName='null', col
> umnName='null')', start='', finish='', reversed=false, count=2147483647)
> from 29@localhost/127.0.0.1
> ERROR - Error in ThreadPoolExecutor
> java.lang.NullPointerException
>         at
> org.apache.cassandra.config.DatabaseDescriptor.getComparator(DatabaseDescriptor.java:914)
>         at
> org.apache.cassandra.io.SSTableReader.getColumnComparator(SSTableReader.java:414)
>         at
> org.apache.cassandra.db.filter.SSTableSliceIterator.<init>(SSTableSliceIterator.java:54)
>         at
> org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:63)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamilyInternal(ColumnFamilyStore.java:1245)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1203)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1172)
>         at org.apache.cassandra.db.Table.getRow(Table.java:415)
>         at
> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)
>         at
> org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:79)
>         at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:38)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:637)
> ERROR - Fatal exception in thread Thread[ROW-READ-STAGE:1,5,main]
> java.lang.NullPointerException
>         at
> org.apache.cassandra.config.DatabaseDescriptor.getComparator(DatabaseDescriptor.java:914)
>         at
> org.apache.cassandra.io.SSTableReader.getColumnComparator(SSTableReader.java:414)
>         at
> org.apache.cassandra.db.filter.SSTableSliceIterator.<init>(SSTableSliceIterator.java:54)
>         at
> org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:63)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamilyInternal(ColumnFamilyStore.java:1245)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1203)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1172)
>         at org.apache.cassandra.db.Table.getRow(Table.java:415)
>         at
> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:59)
>         at
> org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:79)
>         at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:38)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:637)
>