diff --git a/CHANGES.txt b/CHANGES.txt index c7cf90f6ed..65c705b25a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,7 +17,7 @@ Merged from 2.2: * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761) * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) Merged from 2.1: - * Fix cache handling of 2i and base tables (CASSANDRA-10155) + * Fix cache handling of 2i and base tables (CASSANDRA-10155, 10359) * Fix NPE in nodetool compactionhistory (CASSANDRA-9758) * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410) * BATCH statement is broken in cqlsh (CASSANDRA-10272) diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java index 4558bb764f..58ddc2cc47 100644 --- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java +++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java @@ -188,6 +188,15 @@ public class AutoSavingCache extends InstrumentingCache>> futures = new ArrayDeque>>(); while (in.available() > 0) { @@ -337,27 +346,38 @@ public class AutoSavingCache extends InstrumentingCache= keysEstimate) - break; + keysWritten++; + if (keysWritten >= keysEstimate) + break; + } } + catch (IOException e) + { + throw new FSWriteError(e, cacheFilePaths.left); + } + } finally { diff --git a/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java b/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java index 861e84028b..54d39b1066 100644 --- a/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java +++ b/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java @@ -228,6 +228,7 @@ public class KeyCacheCqlTest extends CQLTester assertNull(Schema.instance.getColumnFamilyStoreIncludingIndexes(Pair.create(KEYSPACE, "bar"))); dropTable("DROP TABLE %s"); + Schema.instance.updateVersion(); //Test loading for a dropped 2i/table CacheService.instance.keyCache.clear();