From 6352edb3fe0a3a678e83ba11002e4cdde2cac468 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Sat, 9 Jun 2012 10:31:57 -0500 Subject: [PATCH] fix NPE in compactionstats patch by jbellis; reviewed by xedin for CASSANDRA-4318 --- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 6 +++++- .../compaction/AbstractCompactionIterable.java | 2 +- .../db/compaction/CompactionController.java | 2 +- .../cassandra/db/compaction/CompactionInfo.java | 17 ++++++----------- .../db/compaction/CompactionManager.java | 4 ++-- .../db/index/SecondaryIndexBuilder.java | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 71ab07d05c..ed9650c398 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 1.1.2 + * fix NPE in compactionstats (CASSANDRA-4318) * enforce 1m min keycache for auto (CASSANDRA-4306) * Have DeletedColumn.isMFD always return true (CASSANDRA-4307) * ex msg for cql3 order by constraints says primary filter can be an IN clause diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index 659e9ec7b6..7eed2a02ca 100644 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.compaction.CompactionInfo; import org.apache.cassandra.db.compaction.CompactionManager; @@ -192,7 +193,10 @@ public class AutoSavingCache extends InstrumentingCache overlappingTree; diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java index 17d098ba1c..fdb363eb4f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java @@ -34,38 +34,33 @@ public final class CompactionInfo implements Serializable private final long bytesComplete; private final long totalBytes; - public CompactionInfo(OperationType tasktype, long bytesComplete, long totalBytes) - { - this(null, tasktype, bytesComplete, totalBytes); - } - - public CompactionInfo(Integer id, OperationType tasktype, long bytesComplete, long totalBytes) + public CompactionInfo(CFMetaData cfm, OperationType tasktype, long bytesComplete, long totalBytes) { this.tasktype = tasktype; this.bytesComplete = bytesComplete; this.totalBytes = totalBytes; - this.cfm = id == null ? null : Schema.instance.getCFMetaData(id); + this.cfm = cfm; } /** @return A copy of this CompactionInfo with updated progress. */ public CompactionInfo forProgress(long bytesComplete, long totalBytes) { - return new CompactionInfo(cfm == null ? null : cfm.cfId, tasktype, bytesComplete, totalBytes); + return new CompactionInfo(cfm, tasktype, bytesComplete, totalBytes); } public Integer getId() { - return cfm == null ? null : cfm.cfId; + return cfm.cfId; } public String getKeyspace() { - return cfm == null ? null : cfm.ksName; + return cfm.ksName; } public String getColumnFamily() { - return cfm == null ? null : cfm.cfName; + return cfm.cfName; } public CFMetaData getCFMetaData() diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index 38264f5b8e..46aaa7d309 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -1204,7 +1204,7 @@ public class CompactionManager implements CompactionManagerMBean { try { - return new CompactionInfo(this.hashCode(), + return new CompactionInfo(sstable.metadata, OperationType.CLEANUP, scanner.getCurrentPosition(), scanner.getLengthInBytes()); @@ -1230,7 +1230,7 @@ public class CompactionManager implements CompactionManagerMBean { try { - return new CompactionInfo(this.hashCode(), + return new CompactionInfo(sstable.metadata, OperationType.SCRUB, dataFile.getFilePointer(), dataFile.length()); diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java index 39f2c2da2a..f93be04ec6 100644 --- a/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java +++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java @@ -47,7 +47,7 @@ public class SecondaryIndexBuilder extends CompactionInfo.Holder public CompactionInfo getCompactionInfo() { - return new CompactionInfo(this.hashCode(), + return new CompactionInfo(cfs.metadata, OperationType.INDEX_BUILD, iter.getBytesRead(), iter.getTotalBytes());