cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CASSANDRA-2619) secondary index not dropped until restart
Date Mon, 09 May 2011 07:10:03 GMT

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

Jonathan Ellis resolved CASSANDRA-2619.
---------------------------------------

    Resolution: Fixed
      Reviewer: brandon.williams

(committed)

> secondary index not dropped until restart
> -----------------------------------------
>
>                 Key: CASSANDRA-2619
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2619
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.7.5
>            Reporter: Jackson Chung
>            Assignee: Jonathan Ellis
>             Fix For: 0.7.6, 0.8.0
>
>         Attachments: 2619.txt
>
>
> when dropping the secondary index (via cassandra-cli), the describe keyspace still shows
the Built index entry. Only after a restart of the CassandraDaemon then the Built Index entry
is gone. This seems indicate a problem with the index not really been dropped completed.
> to test, use a single node, create an index, then drop it from the cli (issue an update
column family ... with metadata fields but not the index info)
> below is the original:
>   Column Families:
>     ColumnFamily: inode
>     "Stores file meta data"
>       Key Validation Class: org.apache.cassandra.db.marshal.BytesType
>       Default column value validator: org.apache.cassandra.db.marshal.BytesType
>       Columns sorted by: org.apache.cassandra.db.marshal.BytesType
>       Row cache size / save period in seconds: 0.0/0
>       Key cache size / save period in seconds: 0.0/14400
>       Memtable thresholds: 0.103125/22/1440 (millions of ops/MB/minutes)
>       GC grace seconds: 60
>       Compaction min/max thresholds: 4/32
>       Read repair chance: 1.0
>       Replicate on write: false
>       {color:red}Built indexes: [inode.path, inode.sentinel]{color}
>       Column Metadata:
>         Column Name: path (70617468)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
>           {color:red}Index Name: path
>           Index Type: KEYS{color}
>         Column Name: sentinel (73656e74696e656c)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
>           {color:red}Index Name: sentinel
>           Index Type: KEYS{color}
> issue an update:
> {noformat}
> [default@unknown] use cfs;
> Authenticated to keyspace: cfs
> [default@cfs] update column family inode with comparator=BytesType and column_metadata=[{column_name:70617468,
validation_class:BytesType}, {column_name:73656e74696e656c,validation_class:BytesType}];
> fca46d00-783c-11e0-0000-242d50cf1fff
> Waiting for schema agreement...
> ... schemas agree across the cluster
> {noformat}
> describe the keyspace again:
> Keyspace: cfs:
>   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
>     Options: [Brisk:1, Cassandra:0]
>   Column Families:
>     ColumnFamily: inode
>     "Stores file meta data"
>       Key Validation Class: org.apache.cassandra.db.marshal.BytesType
>       Default column value validator: org.apache.cassandra.db.marshal.BytesType
>       Columns sorted by: org.apache.cassandra.db.marshal.BytesType
>       Row cache size / save period in seconds: 0.0/0
>       Key cache size / save period in seconds: 0.0/14400
>       Memtable thresholds: 0.103125/22/1440 (millions of ops/MB/minutes)
>       GC grace seconds: 60
>       Compaction min/max thresholds: 4/32
>       Read repair chance: 1.0
>       Replicate on write: false
>       {color:red}Built indexes: [inode.path, inode.sentinel]{color}
>       Column Metadata:
>         Column Name: path (70617468)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
>         Column Name: sentinel (73656e74696e656c)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
> *notice the red line on Built Indexes*
> restart CassandraDaemon, describe again:
> Keyspace: cfs:
>   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
>     Options: [Brisk:1, Cassandra:0]
>   Column Families:
>     ColumnFamily: inode
>     "Stores file meta data"
>       Key Validation Class: org.apache.cassandra.db.marshal.BytesType
>       Default column value validator: org.apache.cassandra.db.marshal.BytesType
>       Columns sorted by: org.apache.cassandra.db.marshal.BytesType
>       Row cache size / save period in seconds: 0.0/0
>       Key cache size / save period in seconds: 0.0/14400
>       Memtable thresholds: 0.103125/22/1440 (millions of ops/MB/minutes)
>       GC grace seconds: 60
>       Compaction min/max thresholds: 4/32
>       Read repair chance: 1.0
>       Replicate on write: false
>       {color:red}Built indexes: []{color}
>       Column Metadata:
>         Column Name: path (70617468)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
>         Column Name: sentinel (73656e74696e656c)
>           Validation Class: org.apache.cassandra.db.marshal.BytesType
> on another note, upon re-create the index, it does not appear the index is actually rebuilt.
There is no need to restart CassandraDaemon for the Built Index to show up from the describe.
But the update goes very fast. We could tell the index is not being rebuilt because we were
getting NPE from:
> {noformat}
> java.lang.RuntimeException: java.lang.NullPointerException
> 	at org.apache.cassandra.service.IndexScanVerbHandler.doVerb(IndexScanVerbHandler.java:51)
> 	at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
> 	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:662)
> Caused by: java.lang.NullPointerException
> 	at org.apache.cassandra.db.ColumnFamilyStore.satisfies(ColumnFamilyStore.java:1647)
> 	at org.apache.cassandra.db.ColumnFamilyStore.scan(ColumnFamilyStore.java:1594)
> 	at org.apache.cassandra.service.IndexScanVerbHandler.doVerb(IndexScanVerbHandler.java:42)
> {noformat}
> and after re-create the index, the exception resurface (the exception does not surface
upon drop).
> If we drop the index files and remove them, then re-create the index, the NPE is resolved:

> {noformat}
> $ find /var/lib/cassandra/data/cfs -name "*path*" -o -name "*sentinel* -exec rm {} \;"
> {noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message