You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Christian Esken (JIRA)" <ji...@apache.org> on 2017/02/24 15:50:44 UTC

[jira] [Updated] (CASSANDRA-13264) NullPointerException in sstabledump

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

Christian Esken updated CASSANDRA-13264:
----------------------------------------
    Description: 
sstabledump can fail with NullPointerException, when not all files are present on Disk. This behavior is frequently present on Cassandra nodes with a high write-throughput and much disk I/O. It looks like Cassandra writes the Data file fast, and the other files (Statistics, ...) when it has time to do so (e.g. a minute later). This is OK, but sstabledump does not handle this gracefully.

Current behavior:
 - NullPointerException (see below)

Expected behavior:
 - More graceful behavior, e.g. a message to STDERR


PS: This is minor priority, I may pick up the ticket myself if nobody else is faster. 

-----
{code}
~/apache-cassandra-3.9/tools/bin/sstabledump /appdata/mc-53346-big-Data.db
Exception in thread "main" java.lang.NullPointerException
        at org.apache.cassandra.utils.FBUtilities.newPartitioner(FBUtilities.java:429)
        at org.apache.cassandra.tools.SSTableExport.metadataFromSSTable(SSTableExport.java:104)
        at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:180)
{code}

FBUtilities.java:429 is the following line, and validationMetadata == null:
bq. if (validationMetadata.partitioner.endsWith("LocalPartitioner"))


  was:
I have a table where all columns are stored with TTL of maximum 4 hours. Usually TWCS compaction properly removes  expired data via tombstone compaction and also removes fully expired tables. The number of SSTables is nearly constant since weeks. Good.

The problem:  Suddenly TWCS does not remove old SSTables any longer. They are being recreated frequently (judging form the file creation timestamp), but the number of tables is growing. Analysis and actions take so far:
- sstablemetadata shows strange data, as if the table is completely empty.
- sstabledump throws an Exception when running it on such a SSTable
- Even triggering a manual major compaction will not remove the old SSTable's. To be more precise: They are recreated with new id and timestamp (not sure whether they are identical as I cannot inspect content due to the sstabledump crash)

{color:blue}edit 2017-01-19: This ticket may be obsolete. See the later comments for more information.{color}



> NullPointerException in sstabledump
> -----------------------------------
>
>                 Key: CASSANDRA-13264
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13264
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Compaction
>         Environment: Cassandra 3.0.9
> Java HotSpot(TM) 64-Bit Server VM version 25.112-b15 (Java version 1.8.0_112-b15)
> Linux 3.16
>            Reporter: Christian Esken
>            Priority: Minor
>              Labels: twcs
>
> sstabledump can fail with NullPointerException, when not all files are present on Disk. This behavior is frequently present on Cassandra nodes with a high write-throughput and much disk I/O. It looks like Cassandra writes the Data file fast, and the other files (Statistics, ...) when it has time to do so (e.g. a minute later). This is OK, but sstabledump does not handle this gracefully.
> Current behavior:
>  - NullPointerException (see below)
> Expected behavior:
>  - More graceful behavior, e.g. a message to STDERR
> PS: This is minor priority, I may pick up the ticket myself if nobody else is faster. 
> -----
> {code}
> ~/apache-cassandra-3.9/tools/bin/sstabledump /appdata/mc-53346-big-Data.db
> Exception in thread "main" java.lang.NullPointerException
>         at org.apache.cassandra.utils.FBUtilities.newPartitioner(FBUtilities.java:429)
>         at org.apache.cassandra.tools.SSTableExport.metadataFromSSTable(SSTableExport.java:104)
>         at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:180)
> {code}
> FBUtilities.java:429 is the following line, and validationMetadata == null:
> bq. if (validationMetadata.partitioner.endsWith("LocalPartitioner"))



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)