You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2013/01/18 18:48:56 UTC
[2/6] git commit: fix saved key cache not loading at startup;
patch by yukim reviewed by jbellis for CASSANDRA-5166
fix saved key cache not loading at startup; patch by yukim reviewed by jbellis for CASSANDRA-5166
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f930eb79
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f930eb79
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f930eb79
Branch: refs/heads/cassandra-1.2
Commit: f930eb79cd4567efaeca44142bf8ea93a181f37e
Parents: 1311649
Author: Yuki Morishita <yu...@apache.org>
Authored: Fri Jan 18 11:47:01 2013 -0600
Committer: Yuki Morishita <yu...@apache.org>
Committed: Fri Jan 18 11:47:01 2013 -0600
----------------------------------------------------------------------
CHANGES.txt | 3 +
.../apache/cassandra/io/sstable/SSTableReader.java | 4 +-
.../cassandra/io/sstable/SSTableReaderTest.java | 32 +++++++++++++++
3 files changed, 38 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f930eb79/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index afee142..2a19ed5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,6 @@
+1.1.10
+ * fix saved key cache not loading at startup (CASSANDRA-5166)
+
1.1.9
* Simplify CompressedRandomAccessReader to work around JDK FD bug (CASSANDRA-5088)
* Improve handling a changing target throttle rate mid-compaction (CASSANDRA-5087)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f930eb79/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index f3305b5..18d77ee 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -353,7 +353,9 @@ public class SSTableReader extends SSTable
*/
private void load(boolean recreatebloom, Set<DecoratedKey> keysToLoadInCache) throws IOException
{
- boolean cacheLoading = keyCache != null && !keysToLoadInCache.isEmpty();
+ boolean cacheLoading = !keysToLoadInCache.isEmpty();
+ if (cacheLoading && keyCache == null)
+ keyCache = CacheService.instance.keyCache;
SegmentedFile.Builder ibuilder = SegmentedFile.getBuilder(DatabaseDescriptor.getIndexAccessMode());
SegmentedFile.Builder dbuilder = compression
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f930eb79/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
index 004dac8..fd0c1c6 100644
--- a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
@@ -35,7 +35,10 @@ import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.Util;
+import org.apache.cassandra.cache.KeyCacheKey;
+import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.columniterator.IdentityQueryFilter;
import org.apache.cassandra.db.compaction.CompactionManager;
@@ -43,6 +46,7 @@ import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.dht.Token;
+import org.apache.cassandra.io.util.SequentialWriter;
import org.apache.cassandra.service.CacheService;
import org.apache.cassandra.io.util.FileDataInput;
import org.apache.cassandra.io.util.FileUtils;
@@ -284,6 +288,34 @@ public class SSTableReaderTest extends SchemaLoader
assert target.last.equals(lastKey);
}
+ @Test
+ public void testLoadingSavedKeyCache() throws Exception
+ {
+ final String ks = "Keyspace1";
+ final String cf = "Standard1";
+ CFMetaData meta = Schema.instance.getCFMetaData(ks, cf);
+ Table.clear(ks);
+
+ ByteBuffer key = ByteBufferUtil.bytes("key");
+ CacheService.instance.keyCache.setCapacity(1024);
+ File dir = Directories.create(ks, cf).getDirectoryForNewSSTables(100);
+ SSTableSimpleWriter writer = new SSTableSimpleWriter(dir, meta, StorageService.getPartitioner());
+ writer.newRow(key);
+ writer.addColumn(ByteBufferUtil.bytes("col"), ByteBufferUtil.EMPTY_BYTE_BUFFER, 1);
+ writer.close();
+ Descriptor desc = Descriptor.fromFilename(dir, String.format("%s-%s-%s-1-Data.db", ks, cf, Descriptor.CURRENT_VERSION)).left;
+
+ File cachePath = CacheService.instance.keyCache.getCachePath(ks, cf);
+ SequentialWriter out = SequentialWriter.open(cachePath);
+ new KeyCacheKey(desc, key).write(out.stream);
+ out.close();
+
+ ColumnFamilyStore cfs = Table.open(ks).getColumnFamilyStore(cf);
+ cfs.disableAutoCompaction();
+ SSTableReader sstable = cfs.getSSTables().iterator().next();
+ assert 0 == sstable.getCachedPosition(StorageService.getPartitioner().decorateKey(key), false);
+ }
+
private void assertIndexQueryWorks(ColumnFamilyStore indexedCFS) throws IOException
{
assert "Indexed1".equals(indexedCFS.getColumnFamilyName());