Search in sources :

Example 6 with CacheMetrics

use of org.apache.cassandra.metrics.CacheMetrics in project cassandra by apache.

the class KeyCacheCqlTest method testKeyCacheNonClustered.

private void testKeyCacheNonClustered() throws Throwable {
    String table = createTable("CREATE TABLE %s (" + commonColumnsDef + "PRIMARY KEY ((part_key_a, part_key_b)))");
    insertData(table, null, false);
    clearCache();
    for (int i = 0; i < 10; i++) {
        assertRows(execute("SELECT col_text FROM %s WHERE part_key_a = ? AND part_key_b = ?", i, Integer.toOctalString(i)), new Object[] { String.valueOf(i) + '-' + String.valueOf(0) });
    }
    CacheMetrics metrics = CacheService.instance.keyCache.getMetrics();
    long hits = metrics.hits.getCount();
    long requests = metrics.requests.getCount();
    assertEquals(0, hits);
    assertEquals(10, requests);
    for (int i = 0; i < 100; i++) {
        assertRows(execute("SELECT col_text FROM %s WHERE part_key_a = ? AND part_key_b = ?", i, Integer.toOctalString(i)), new Object[] { String.valueOf(i) + '-' + String.valueOf(0) });
    }
    hits = metrics.hits.getCount();
    requests = metrics.requests.getCount();
    assertEquals(10, hits);
    assertEquals(120, requests);
}
Also used : CacheMetrics(org.apache.cassandra.metrics.CacheMetrics)

Example 7 with CacheMetrics

use of org.apache.cassandra.metrics.CacheMetrics in project cassandra by apache.

the class KeyCacheCqlTest method test2iKeyCachePaths.

private void test2iKeyCachePaths() throws Throwable {
    String table = createTable("CREATE TABLE %s (" + commonColumnsDef + "PRIMARY KEY ((part_key_a, part_key_b),clust_key_a,clust_key_b,clust_key_c))");
    createIndex("CREATE INDEX some_index ON %s (col_int)");
    insertData(table, "some_index", true);
    clearCache();
    CacheMetrics metrics = CacheService.instance.keyCache.getMetrics();
    for (int i = 0; i < 10; i++) {
        UntypedResultSet result = execute("SELECT part_key_a FROM %s WHERE col_int = ?", i);
        assertEquals(500, result.size());
    }
    long hits = metrics.hits.getCount();
    long requests = metrics.requests.getCount();
    assertEquals(0, hits);
    assertEquals(210, requests);
    for (int i = 0; i < 10; i++) {
        UntypedResultSet result = execute("SELECT part_key_a FROM %s WHERE col_int = ?", i);
        // 100 part-keys * 50 clust-keys
        // indexed on part-key % 10 = 10 index partitions
        // (50 clust-keys  *  100-part-keys  /  10 possible index-values) = 500
        assertEquals(500, result.size());
    }
    metrics = CacheService.instance.keyCache.getMetrics();
    hits = metrics.hits.getCount();
    requests = metrics.requests.getCount();
    assertEquals(200, hits);
    assertEquals(420, requests);
    CacheService.instance.keyCache.submitWrite(Integer.MAX_VALUE).get();
    int beforeSize = CacheService.instance.keyCache.size();
    CacheService.instance.keyCache.clear();
    Assert.assertEquals(0, CacheService.instance.keyCache.size());
    // then load saved
    CacheService.instance.keyCache.loadSaved();
    assertEquals(beforeSize, CacheService.instance.keyCache.size());
    for (int i = 0; i < 10; i++) {
        UntypedResultSet result = execute("SELECT part_key_a FROM %s WHERE col_int = ?", i);
        // 100 part-keys * 50 clust-keys
        // indexed on part-key % 10 = 10 index partitions
        // (50 clust-keys  *  100-part-keys  /  10 possible index-values) = 500
        assertEquals(500, result.size());
    }
    dropTable("DROP TABLE %s");
    Schema.instance.updateVersion();
    //Test loading for a dropped 2i/table
    CacheService.instance.keyCache.clear();
    // then load saved
    CacheService.instance.keyCache.loadSaved();
    assertEquals(0, CacheService.instance.keyCache.size());
}
Also used : CacheMetrics(org.apache.cassandra.metrics.CacheMetrics)

Aggregations

CacheMetrics (org.apache.cassandra.metrics.CacheMetrics)7 KeyCacheKey (org.apache.cassandra.cache.KeyCacheKey)1 TableMetadataRef (org.apache.cassandra.schema.TableMetadataRef)1