cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jay Zhuang (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-12453) AutoSavingCache does not store required keys making RowCacheTests Flaky
Date Fri, 23 Dec 2016 01:33:58 GMT


Jay Zhuang commented on CASSANDRA-12453:

The issue can be consistently reproduced on machine with > 16 CPUs (which will use [64
cache segments|]),
or override the [{{segmentCount}}|]
to [64 |]:
    [junit] Testcase: testRowCachePartialLoad(org.apache.cassandra.db.RowCacheTest):    FAILED
    [junit] expected:<50> but was:<48>
    [junit] junit.framework.AssertionFailedError: expected:<50> but was:<48>
    [junit]     at org.apache.cassandra.db.RowCacheTest.rowCacheLoad(
    [junit]     at org.apache.cassandra.db.RowCacheTest.testRowCachePartialLoad(

When there're only 100 keys are [hashed to 64 segments|],
16 segments are actually empty. The hotKeyIterator try to get [one key per segments|],
which will only get 48.

The fix is to increase the data size to cover more segments, so the hotKeyIterator is able
to get 50 keys. I don't think it will impact Cassandra, as in production, the cache segments
should be filled with more data, even get less cache keys should not be a problem.
The fix is attached, please review.

> AutoSavingCache does not store required keys making RowCacheTests Flaky
> -----------------------------------------------------------------------
>                 Key: CASSANDRA-12453
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: sankalp kohli
>            Assignee: Jay Zhuang
>            Priority: Minor
>             Fix For: 2.2.x, 3.0.x
>         Attachments: 12453-2.2.txt
> RowCacheTests were flaky and while investigating, I found that it does not store all
the keys to disk. 
> The reason is that we use  OHCache and call hotKeyIterator on it. This is not guaranteed
to return the number of keys we want. Here is the documentation from OHCache 
> /**
>      * Builds an iterator over the N most recently used keys returning deserialized objects.
>      * You must call {@code close()} on the returned iterator.
>      * <p>
>      *     Note: During a rehash, the implementation might return keys twice or not at
>      * </p>
>      */
>     CloseableIterator<K> hotKeyIterator(int n);

This message was sent by Atlassian JIRA

View raw message