Updated Branches: refs/heads/trunk 2fc450a0b -> a3734e54b
remove on-heap row cache Removed on-heap row cache patch by jbellis; reviewed by jasobrown for CASSANDRA-5348 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a3734e54 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a3734e54 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a3734e54 Branch: refs/heads/trunk Commit: a3734e54bc9032dedad5d44394cca8dc7e400a43 Parents: 2fc450a Author: Jonathan Ellis <jbel...@apache.org> Authored: Wed May 22 15:31:26 2013 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Wed May 22 15:59:52 2013 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + conf/cassandra.yaml | 18 ------ .../cassandra/cache/ConcurrentLinkedHashCache.java | 5 -- .../cache/ConcurrentLinkedHashCacheProvider.java | 26 --------- src/java/org/apache/cassandra/cache/ICache.java | 6 -- .../apache/cassandra/cache/IRowCacheProvider.java | 26 --------- .../apache/cassandra/cache/InstrumentingCache.java | 5 -- .../apache/cassandra/cache/SerializingCache.java | 5 -- .../cassandra/cache/SerializingCacheProvider.java | 2 +- src/java/org/apache/cassandra/config/Config.java | 2 - .../cassandra/config/DatabaseDescriptor.java | 8 --- .../apache/cassandra/db/CollationController.java | 11 +--- .../org/apache/cassandra/db/ColumnFamilyStore.java | 41 ++++----------- .../db/compaction/CompactionController.java | 14 ----- .../cassandra/db/compaction/CompactionTask.java | 3 - .../org/apache/cassandra/service/CacheService.java | 10 ++-- .../org/apache/cassandra/utils/FBUtilities.java | 8 --- .../org/apache/cassandra/utils/StatusLogger.java | 29 +++++----- .../cassandra/db/CollationControllerTest.java | 4 +- 19 files changed, 35 insertions(+), 189 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index fd85dab..b765896 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.0 + * Removed on-heap row cache (CASSANDRA-5348) * use nanotime consistently for node-local timeouts (CASSANDRA-5581) * Avoid unnecessary second pass on name-based queries (CASSANDRA-5577) * Experimental triggers (CASSANDRA-1311) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/conf/cassandra.yaml ---------------------------------------------------------------------- diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 1192442..f8cf4f7 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -170,24 +170,6 @@ row_cache_save_period: 0 # Disabled by default, meaning all keys are going to be saved # row_cache_keys_to_save: 100 -# The provider for the row cache to use. -# -# Supported values are: ConcurrentLinkedHashCacheProvider, SerializingCacheProvider -# -# SerializingCacheProvider serialises the contents of the row and stores -# it in native memory, i.e., off the JVM Heap. Serialized rows take -# significantly less memory than "live" rows in the JVM, so you can cache -# more rows in a given memory footprint. And storing the cache off-heap -# means you can use smaller heap sizes, reducing the impact of GC pauses. -# Note however that when a row is requested from the row cache, it must be -# deserialized into the heap for use. -# -# It is also valid to specify the fully-qualified class name to a class -# that implements org.apache.cassandra.cache.IRowCacheProvider. -# -# Defaults to SerializingCacheProvider -row_cache_provider: SerializingCacheProvider - # The off-heap memory allocator. Affects storage engine metadata as # well as caches. Experiments show that JEMAlloc saves some memory # than the native GCC allocator (i.e., JEMalloc is more http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCache.java b/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCache.java index af6549d..f1e0466 100644 --- a/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCache.java +++ b/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCache.java @@ -130,9 +130,4 @@ public class ConcurrentLinkedHashCache<K extends IMeasurableMemory, V extends IM { return map.containsKey(key); } - - public boolean isPutCopying() - { - return false; - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCacheProvider.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCacheProvider.java b/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCacheProvider.java deleted file mode 100644 index e1e06ee..0000000 --- a/src/java/org/apache/cassandra/cache/ConcurrentLinkedHashCacheProvider.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cassandra.cache; - -public class ConcurrentLinkedHashCacheProvider implements IRowCacheProvider -{ - public ICache<RowCacheKey, IRowCacheEntry> create(long capacity) - { - return ConcurrentLinkedHashCache.create(capacity); - } -} http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/ICache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/ICache.java b/src/java/org/apache/cassandra/cache/ICache.java index 81ffe62..22dbb16 100644 --- a/src/java/org/apache/cassandra/cache/ICache.java +++ b/src/java/org/apache/cassandra/cache/ICache.java @@ -51,10 +51,4 @@ public interface ICache<K, V> public Set<K> hotKeySet(int n); public boolean containsKey(K key); - - /** - * @return true if the cache implementation inherently copies the cached values; otherwise, - * the caller should copy manually before caching shared values like Thrift ByteBuffers. - */ - public boolean isPutCopying(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/IRowCacheProvider.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/IRowCacheProvider.java b/src/java/org/apache/cassandra/cache/IRowCacheProvider.java deleted file mode 100644 index 003bfae..0000000 --- a/src/java/org/apache/cassandra/cache/IRowCacheProvider.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.cassandra.cache; - -/** - * Provides cache objects with a requested capacity. - */ -public interface IRowCacheProvider -{ - public ICache<RowCacheKey, IRowCacheEntry> create(long capacity); -} http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/InstrumentingCache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/InstrumentingCache.java b/src/java/org/apache/cassandra/cache/InstrumentingCache.java index 9655e8d..311b373 100644 --- a/src/java/org/apache/cassandra/cache/InstrumentingCache.java +++ b/src/java/org/apache/cassandra/cache/InstrumentingCache.java @@ -125,11 +125,6 @@ public class InstrumentingCache<K, V> return map.containsKey(key); } - public boolean isPutCopying() - { - return map.isPutCopying(); - } - public CacheMetrics getMetrics() { return metrics; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/SerializingCache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/SerializingCache.java b/src/java/org/apache/cassandra/cache/SerializingCache.java index c7430d2..2210f10 100644 --- a/src/java/org/apache/cassandra/cache/SerializingCache.java +++ b/src/java/org/apache/cassandra/cache/SerializingCache.java @@ -249,9 +249,4 @@ public class SerializingCache<K, V> implements ICache<K, V> { return map.containsKey(key); } - - public boolean isPutCopying() - { - return true; - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java b/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java index 1ee211d..84c948e 100644 --- a/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java +++ b/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java @@ -26,7 +26,7 @@ import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.io.ISerializer; import org.apache.cassandra.net.MessagingService; -public class SerializingCacheProvider implements IRowCacheProvider +public class SerializingCacheProvider { public ICache<RowCacheKey, IRowCacheEntry> create(long capacity) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/config/Config.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index 31bf20e..d691681 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -17,7 +17,6 @@ */ package org.apache.cassandra.config; -import org.apache.cassandra.cache.SerializingCacheProvider; import org.apache.cassandra.config.EncryptionOptions.ClientEncryptionOptions; import org.apache.cassandra.config.EncryptionOptions.ServerEncryptionOptions; import org.apache.cassandra.io.util.NativeAllocator; @@ -164,7 +163,6 @@ public class Config public long row_cache_size_in_mb = 0; public volatile int row_cache_save_period = 0; public int row_cache_keys_to_save = Integer.MAX_VALUE; - public String row_cache_provider = SerializingCacheProvider.class.getSimpleName(); public String memory_allocator = NativeAllocator.class.getSimpleName(); public boolean populate_io_cache_on_flush = false; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/config/DatabaseDescriptor.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index b33f6fd..7a13d13 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -30,7 +30,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.cassandra.auth.*; -import org.apache.cassandra.cache.IRowCacheProvider; import org.apache.cassandra.config.Config.RequestSchedulerId; import org.apache.cassandra.config.EncryptionOptions.ClientEncryptionOptions; import org.apache.cassandra.config.EncryptionOptions.ServerEncryptionOptions; @@ -79,7 +78,6 @@ public class DatabaseDescriptor private static RequestSchedulerOptions requestSchedulerOptions; private static long keyCacheSizeInMB; - private static IRowCacheProvider rowCacheProvider; private static IAllocator memoryAllocator; private static String localDC; @@ -428,7 +426,6 @@ public class DatabaseDescriptor + conf.key_cache_size_in_mb + "', supported values are <integer> >= 0."); } - rowCacheProvider = FBUtilities.newCacheProvider(conf.row_cache_provider); memoryAllocator = FBUtilities.newOffHeapAllocator(conf.memory_allocator); if(conf.encryption_options != null) @@ -1166,11 +1163,6 @@ public class DatabaseDescriptor return conf.row_cache_keys_to_save; } - public static IRowCacheProvider getRowCacheProvider() - { - return rowCacheProvider; - } - public static IAllocator getoffHeapMemoryAllocator() { return memoryAllocator; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/db/CollationController.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/CollationController.java b/src/java/org/apache/cassandra/db/CollationController.java index 0482c47..eb5192e 100644 --- a/src/java/org/apache/cassandra/db/CollationController.java +++ b/src/java/org/apache/cassandra/db/CollationController.java @@ -41,20 +41,15 @@ public class CollationController private final ColumnFamilyStore cfs; private final QueryFilter filter; - private final ColumnFamily.Factory factory; private final int gcBefore; private int sstablesIterated = 0; - public CollationController(ColumnFamilyStore cfs, boolean mutableColumns, QueryFilter filter, int gcBefore) + public CollationController(ColumnFamilyStore cfs, QueryFilter filter, int gcBefore) { this.cfs = cfs; this.filter = filter; this.gcBefore = gcBefore; - - this.factory = mutableColumns - ? AtomicSortedColumns.factory - : ArrayBackedSortedColumns.factory; } public ColumnFamily getTopLevelColumns() @@ -73,7 +68,7 @@ public class CollationController private ColumnFamily collectTimeOrderedData() { logger.trace("collectTimeOrderedData"); - final ColumnFamily container = factory.create(cfs.metadata, filter.filter.isReversed()); + final ColumnFamily container = ArrayBackedSortedColumns.factory.create(cfs.metadata, filter.filter.isReversed()); List<OnDiskAtomIterator> iterators = new ArrayList<OnDiskAtomIterator>(); Tracing.trace("Acquiring sstable references"); ColumnFamilyStore.ViewFragment view = cfs.markReferenced(filter.key); @@ -223,7 +218,7 @@ public class CollationController Tracing.trace("Acquiring sstable references"); ColumnFamilyStore.ViewFragment view = cfs.markReferenced(filter.key); List<OnDiskAtomIterator> iterators = new ArrayList<OnDiskAtomIterator>(Iterables.size(view.memtables) + view.sstables.size()); - ColumnFamily returnCF = factory.create(cfs.metadata, filter.filter.isReversed()); + ColumnFamily returnCF = ArrayBackedSortedColumns.factory.create(cfs.metadata, filter.filter.isReversed()); try { http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/db/ColumnFamilyStore.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 892e35f..78825cf 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -808,29 +808,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean FBUtilities.waitOnFuture(forceFlush()); } - public void maybeUpdateRowCache(DecoratedKey key, ColumnFamily columnFamily) + public void maybeUpdateRowCache(DecoratedKey key) { if (!isRowCacheEnabled()) return; RowCacheKey cacheKey = new RowCacheKey(metadata.cfId, key); - - // always invalidate a copying cache value - if (CacheService.instance.rowCache.isPutCopying()) - { - invalidateCachedRow(cacheKey); - return; - } - - // invalidate a normal cache value if it's a sentinel, so the read will retry (and include the new update) - IRowCacheEntry cachedRow = CacheService.instance.rowCache.getInternal(cacheKey); - if (cachedRow != null) - { - if (cachedRow instanceof RowCacheSentinel) - invalidateCachedRow(cacheKey); - else - ((ColumnFamily) cachedRow).addAll(columnFamily, HeapAllocator.instance); - } + invalidateCachedRow(cacheKey); } /** @@ -846,7 +830,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean Memtable mt = getMemtableThreadSafe(); mt.put(key, columnFamily, indexer); - maybeUpdateRowCache(key, columnFamily); + maybeUpdateRowCache(key); metric.writeLatency.addNano(System.nanoTime() - start); // recompute liveRatio, if we have doubled the number of ops since last calculated @@ -1239,7 +1223,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { // Some other read is trying to cache the value, just do a normal non-caching read Tracing.trace("Row cache miss (race)"); - return getTopLevelColumns(filter, Integer.MIN_VALUE, false); + return getTopLevelColumns(filter, Integer.MIN_VALUE); } Tracing.trace("Row cache hit"); return (ColumnFamily) cached; @@ -1251,9 +1235,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean try { - ColumnFamily data = getTopLevelColumns(QueryFilter.getIdentityFilter(filter.key, name), - Integer.MIN_VALUE, - true); + ColumnFamily data = getTopLevelColumns(QueryFilter.getIdentityFilter(filter.key, name), Integer.MIN_VALUE); if (sentinelSuccess && data != null) CacheService.instance.rowCache.replace(key, sentinel, data); @@ -1295,7 +1277,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean } else { - ColumnFamily cf = getTopLevelColumns(filter, gcBefore, false); + ColumnFamily cf = getTopLevelColumns(filter, gcBefore); if (cf == null) return null; @@ -1462,13 +1444,10 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean } } - public ColumnFamily getTopLevelColumns(QueryFilter filter, int gcBefore, boolean forCache) + public ColumnFamily getTopLevelColumns(QueryFilter filter, int gcBefore) { Tracing.trace("Executing single-partition query on {}", name); - CollationController controller = new CollationController(this, - forCache && !CacheService.instance.rowCache.isPutCopying(), - filter, - gcBefore); + CollationController controller = new CollationController(this, filter, gcBefore); ColumnFamily columns = controller.getTopLevelColumns(); metric.updateSSTableIterated(controller.getSstablesIterated()); return columns; @@ -1727,8 +1706,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public ColumnFamily getRawCachedRow(DecoratedKey key) { - if (!isRowCacheEnabled() || metadata.cfId == null) - return null; // secondary index + if (!isRowCacheEnabled()) + return null; IRowCacheEntry cached = CacheService.instance.rowCache.getInternal(new RowCacheKey(metadata.cfId, key)); return cached == null || cached instanceof RowCacheSentinel ? null : (ColumnFamily) cached; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/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 fd23882..15878c5 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java @@ -177,20 +177,6 @@ public class CompactionController cfs.invalidateCachedRow(key); } - public void removeDeletedInCache(DecoratedKey key) - { - // For the copying cache, we'd need to re-serialize the updated cachedRow, which would be racy - // vs other updates. We'll just ignore it instead, since the next update to this row will invalidate it - // anyway, so the odds of a "tombstones consuming memory indefinitely" problem are minimal. - // See https://issues.apache.org/jira/browse/CASSANDRA-3921 for more discussion. - if (CacheService.instance.rowCache.isPutCopying()) - return; - - ColumnFamily cachedRow = cfs.getRawCachedRow(key); - if (cachedRow != null) - ColumnFamilyStore.removeDeleted(cachedRow, gcBefore); - } - /** * @return an AbstractCompactedRow implementation to write the merged rows in question. * http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/db/compaction/CompactionTask.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java index 13fc11d..d6fd171 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java @@ -165,9 +165,6 @@ public class CompactionTask extends AbstractCompactionTask continue; } - // If the row is cached, we call removeDeleted on at read time it to have coherent query returns, - // but if the row is not pushed out of the cache, obsolete tombstones will persist indefinitely. - controller.removeDeletedInCache(row.key); totalkeysWritten++; if (DatabaseDescriptor.getPreheatKeyCache()) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/service/CacheService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java index 5eff28a..d301507 100644 --- a/src/java/org/apache/cassandra/service/CacheService.java +++ b/src/java/org/apache/cassandra/service/CacheService.java @@ -130,14 +130,12 @@ public class CacheService implements CacheServiceMBean */ private AutoSavingCache<RowCacheKey, IRowCacheEntry> initRowCache() { - logger.info("Initializing row cache with capacity of {} MBs and provider {}", - DatabaseDescriptor.getRowCacheSizeInMB(), - DatabaseDescriptor.getRowCacheProvider().getClass().getName()); + logger.info("Initializing row cache with capacity of {} MBs", DatabaseDescriptor.getRowCacheSizeInMB()); long rowCacheInMemoryCapacity = DatabaseDescriptor.getRowCacheSizeInMB() * 1024 * 1024; // cache object - ICache<RowCacheKey, IRowCacheEntry> rc = DatabaseDescriptor.getRowCacheProvider().create(rowCacheInMemoryCapacity); + ICache<RowCacheKey, IRowCacheEntry> rc = new SerializingCacheProvider().create(rowCacheInMemoryCapacity); AutoSavingCache<RowCacheKey, IRowCacheEntry> rowCache = new AutoSavingCache<RowCacheKey, IRowCacheEntry>(rc, CacheType.ROW_CACHE, new RowCacheSerializer()); int rowCacheKeysToSave = DatabaseDescriptor.getRowCacheKeysToSave(); @@ -302,7 +300,7 @@ public class CacheService implements CacheServiceMBean public Pair<RowCacheKey, IRowCacheEntry> call() throws Exception { DecoratedKey key = cfs.partitioner.decorateKey(buffer); - ColumnFamily data = cfs.getTopLevelColumns(QueryFilter.getIdentityFilter(key, cfs.name), Integer.MIN_VALUE, true); + ColumnFamily data = cfs.getTopLevelColumns(QueryFilter.getIdentityFilter(key, cfs.name), Integer.MIN_VALUE); return Pair.create(new RowCacheKey(cfs.metadata.cfId, key), (IRowCacheEntry) data); } }); @@ -313,7 +311,7 @@ public class CacheService implements CacheServiceMBean for (ByteBuffer key : buffers) { DecoratedKey dk = cfs.partitioner.decorateKey(key); - ColumnFamily data = cfs.getTopLevelColumns(QueryFilter.getIdentityFilter(dk, cfs.name), Integer.MIN_VALUE, true); + ColumnFamily data = cfs.getTopLevelColumns(QueryFilter.getIdentityFilter(dk, cfs.name), Integer.MIN_VALUE); if (data != null) rowCache.put(new RowCacheKey(cfs.metadata.cfId, dk), data); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/utils/FBUtilities.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index eeeb41f..027f74a 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -41,7 +41,6 @@ import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.cassandra.cache.IRowCacheProvider; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.DecoratedKey; @@ -500,13 +499,6 @@ public class FBUtilities return field; } - public static IRowCacheProvider newCacheProvider(String cache_provider) throws ConfigurationException - { - if (!cache_provider.contains(".")) - cache_provider = "org.apache.cassandra.cache." + cache_provider; - return FBUtilities.construct(cache_provider, "row cache provider"); - } - public static <T> CloseableIterator<T> closeableIterator(Iterator<T> iterator) { return new WrappedCloseableIterator<T>(iterator); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/src/java/org/apache/cassandra/utils/StatusLogger.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/StatusLogger.java b/src/java/org/apache/cassandra/utils/StatusLogger.java index b7266cb..94f045e 100644 --- a/src/java/org/apache/cassandra/utils/StatusLogger.java +++ b/src/java/org/apache/cassandra/utils/StatusLogger.java @@ -26,10 +26,8 @@ import javax.management.ObjectName; import com.google.common.collect.Iterables; -import org.apache.cassandra.cache.AutoSavingCache; -import org.apache.cassandra.cache.IRowCacheEntry; -import org.apache.cassandra.cache.KeyCacheKey; -import org.apache.cassandra.cache.RowCacheKey; +import org.apache.cassandra.cache.*; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,18 +90,19 @@ public class StatusLogger int keyCacheKeysToSave = DatabaseDescriptor.getKeyCacheKeysToSave(); int rowCacheKeysToSave = DatabaseDescriptor.getRowCacheKeysToSave(); - logger.info(String.format("%-25s%10s%25s%25s%65s", "Cache Type", "Size", "Capacity", "KeysToSave", "Provider")); - logger.info(String.format("%-25s%10s%25s%25s%65s", "KeyCache", - keyCache.weightedSize(), - keyCache.getCapacity(), - keyCacheKeysToSave == Integer.MAX_VALUE ? "all" : keyCacheKeysToSave, - "")); + logger.info(String.format("%-25s%10s%25s%25s", + "Cache Type", "Size", "Capacity", "KeysToSave")); + logger.info(String.format("%-25s%10s%25s%25s", + "KeyCache", + keyCache.weightedSize(), + keyCache.getCapacity(), + keyCacheKeysToSave == Integer.MAX_VALUE ? "all" : keyCacheKeysToSave)); - logger.info(String.format("%-25s%10s%25s%25s%65s", "RowCache", - rowCache.weightedSize(), - rowCache.getCapacity(), - rowCacheKeysToSave == Integer.MAX_VALUE ? "all" : rowCacheKeysToSave, - DatabaseDescriptor.getRowCacheProvider().getClass().getName())); + logger.info(String.format("%-25s%10s%25s%25s", + "RowCache", + rowCache.weightedSize(), + rowCache.getCapacity(), + rowCacheKeysToSave == Integer.MAX_VALUE ? "all" : rowCacheKeysToSave)); // per-CF stats logger.info(String.format("%-25s%20s", "ColumnFamily", "Memtable ops,data")); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3734e54/test/unit/org/apache/cassandra/db/CollationControllerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/CollationControllerTest.java b/test/unit/org/apache/cassandra/db/CollationControllerTest.java index 4ef8d64..f835ad3 100644 --- a/test/unit/org/apache/cassandra/db/CollationControllerTest.java +++ b/test/unit/org/apache/cassandra/db/CollationControllerTest.java @@ -70,7 +70,7 @@ public class CollationControllerTest extends SchemaLoader // A NamesQueryFilter goes down one code path (through collectTimeOrderedData()) // It should only iterate the last flushed sstable, since it probably contains the most recent value for Column1 QueryFilter filter = QueryFilter.getNamesFilter(dk, "Standard1", ByteBufferUtil.bytes("Column1")); - CollationController controller = new CollationController(store, false, filter, Integer.MIN_VALUE); + CollationController controller = new CollationController(store, filter, Integer.MIN_VALUE); controller.getTopLevelColumns(); assertEquals(1, controller.getSstablesIterated()); @@ -78,7 +78,7 @@ public class CollationControllerTest extends SchemaLoader // We will read "only" the last sstable in that case, but because the 2nd sstable has a tombstone that is more // recent than the maxTimestamp of the very first sstable we flushed, we should only read the 2 first sstables. filter = QueryFilter.getIdentityFilter(dk, "Standard1"); - controller = new CollationController(store, false, filter, Integer.MIN_VALUE); + controller = new CollationController(store, filter, Integer.MIN_VALUE); controller.getTopLevelColumns(); assertEquals(2, controller.getSstablesIterated()); }