fix NPE in compactionstats patch by jbellis; reviewed by xedin for CASSANDRA-4318
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6352edb3 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6352edb3 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6352edb3 Branch: refs/heads/trunk Commit: 6352edb3fe0a3a678e83ba11002e4cdde2cac468 Parents: 8fd3f49 Author: Jonathan Ellis <jbel...@apache.org> Authored: Sat Jun 9 10:31:57 2012 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Sat Jun 9 10:31:57 2012 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../apache/cassandra/cache/AutoSavingCache.java | 6 ++++- .../db/compaction/AbstractCompactionIterable.java | 2 +- .../db/compaction/CompactionController.java | 2 +- .../cassandra/db/compaction/CompactionInfo.java | 17 +++++--------- .../cassandra/db/compaction/CompactionManager.java | 4 +- .../cassandra/db/index/SecondaryIndexBuilder.java | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 71ab07d..ed9650c 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 http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/cache/AutoSavingCache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index 659e9ec..7eed2a0 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<K extends CacheKey, V> extends InstrumentingCache<K else type = OperationType.UNKNOWN; - info = new CompactionInfo(type, 0, estimatedTotalBytes); + info = new CompactionInfo(new CFMetaData("system", cacheType.toString(), null, null, null), + type, + 0, + estimatedTotalBytes); } public CompactionInfo getCompactionInfo() http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/db/compaction/AbstractCompactionIterable.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionIterable.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionIterable.java index 1eb4e9b..db3e1b3 100644 --- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionIterable.java +++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionIterable.java @@ -53,7 +53,7 @@ public abstract class AbstractCompactionIterable extends CompactionInfo.Holder i public CompactionInfo getCompactionInfo() { - return new CompactionInfo(this.hashCode(), + return new CompactionInfo(controller.cfs.metadata, type, bytesRead, totalBytes); http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/db/compaction/CompactionController.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java index 9eaefe7..8ff871e 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java @@ -42,7 +42,7 @@ public class CompactionController { private static Logger logger = LoggerFactory.getLogger(CompactionController.class); - private final ColumnFamilyStore cfs; + public final ColumnFamilyStore cfs; private final boolean deserializeRequired; private final IntervalTree<SSTableReader> overlappingTree; http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java index 17d098b..fdb363e 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() http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index 38264f5..46aaa7d 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()); http://git-wip-us.apache.org/repos/asf/cassandra/blob/6352edb3/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexBuilder.java index 39f2c2d..f93be04 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());